禁止靜態檔案快取的方法,可用於JS與CSS檔案上

來源:互聯網
上載者:User

什麼情況下,要禁止靜態檔案快取:
1、經常可能要改動的 js, css.
       比如 一個html 檔案, test.html 在 1.0版本中。可能是這樣
     <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的版本號碼"> 來有效利用和更新緩衝.

CSS更新的問題,如果網站CSS修改了,但客戶瀏覽器設定不更新緩衝,那看到的網頁可能會亂掉。因為CSS緩衝沒有更新。(解決,可以在css檔案後加一個參數,參數改變後,瀏覽器會重新下載新的檔案。如:<link rel="stylesheet" type="text/css" href="templates/css/stylesheet.css?v=1366768782">)

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.