<script src="common.js"></script>
修改後 v1.1版本:
<script src="common.js"></script>
<script src="foo.js"></script>
新增加了一個foo.js 同時,也改動了common.js , 在common.js 中定義了新的類,並在foo.js 中使用了common.js.
在這種情況下如果以前使用者瀏覽過 1.0版本的 html 檔案,那麼他的瀏覽器自動緩衝了 common.js
當他瀏覽新版本的時候,因為使用的是 v1.1的 foo.js 和 v1.0的 common.js ,這樣將導致指令碼出錯。
解決方案探討:
因為css,js 是通過 <script src=....> 這種方式載入的,所以,很難使用 asp 的那種伺服器端禁止緩衝的辦法。也很難使用ajax的通過設定 http要求標頭的辦法禁止使用緩衝。
看來隨機數是個好辦法。
//方法一:
document.write("<script src='test.js?rnd="+Math.random()+"'></s"+"cript>")
//方法二:
var js=document.createElement("script")
js.src="test.js"+Math.random()
document.body.appendChild(js)
但是,如果採用隨機數的話, js檔案將永遠得不到緩衝,每次都必須重新從伺服器載入,即使沒有任何更改。
大家如果經常上國外網站的話,可以看到他們通常採用這樣的方式來解決:
<script src="test.js?ver=113"></script>
其中 ver=113 的 113就是版本號碼,一般都是採用 CVS 或其他工具產生的開發版本號碼。
這樣真正做到了應該緩衝的時候緩衝靜態檔案,當版本有更新的時候從擷取最新的版本,並更新緩衝。
對於映像 <img src="test.jps?ver=在CVS的版本號碼"> 來有效利用和更新緩衝.