Javascript清除IE緩衝

來源:互聯網
上載者:User

 對於動態檔案,比如 index.asp?id=...  或者 index.aspx?id=... 相信有經驗的程式員都知道怎樣禁止瀏覽器快取資料了.
但是對於靜態檔案(css,jpg,gif等等), 在什麼場合下面我們需要禁止瀏覽器緩衝他們,怎麼做?
    方法一:Dojo中我們可以用簡單的方法完成:在dojo.xhrGet(包括post)等方法中都包含preventCache屬性,此屬性的含義: “預設為啟用瀏覽器緩衝,否則將通過自動增加不同的參數來確保瀏覽器緩衝失效”  我們只要把此屬性賦值為:“true”即可。
    方法二:document.write("< src='test.js?rnd="+Math.random()+"'>")。
    方法三:var js=document.createElement("script")
            js.src="test.js"+Math.random()
            document.body.appendChild(js)
    但是,如果採用隨機數的話, js檔案將永遠得不到緩衝,每次都必須重新從伺服器載入,即使沒有任何更改。
大家如果經常上國外網站的話,可以看到他們通常採用這樣的方式來解決:
< src="test.js?ver=113">
其中 ver=113 的 113就是版本號碼,一般都是採用 CVS 或其他工具產生的開發版本號碼。
這樣真正做到了應該緩衝的時候緩衝靜態檔案,當版本有更新的時候從擷取最新的版本,並更新緩衝。
對於映像  來有效利用和更新緩衝.

 

js清除瀏覽器緩衝  二

為了減小瀏覽器與伺服器之間網路傳輸壓力,往往對靜態檔案,如js,css,修飾的圖片做cache,也就是給這些檔案的HTTP回應標頭加入 Expires和Cache-Control參數,並指定緩衝時間,這樣一定時間內瀏覽器就不會給伺服器發出任何的HTTP請求(除了強制重新整理),即使在 這段時間內伺服器的js或css或圖片檔案已經更新多次,但瀏覽器的資料依然是原來最能初cache的舊資料,有沒有辦法讓瀏覽器拿到已經修改後的最新數 據呢?

有,方法是用ajax請求伺服器最新檔案,並加上要求標頭If-Modified-Since和Cache-Control,如下:

$.ajax({
type: "GET",
url: "static/cache.js",
dataType: "text",
beforeSend :function(xmlHttp){
xmlHttp.setRequestHeader("If-Modified-Since","0");
xmlHttp.setRequestHeader("Cache-Control","no-cache");

    }
});

這裡用了jquery.

這樣瀏覽器就會把最新的檔案替換掉本地舊檔案。

當然,這裡還一個問題就是js必須知道伺服器更新了那個js、css、圖片,利用cookie和時間版本應該可以解決.

jquery自從1.2開始就有ifModified和cache參數了,不用自己加header
ifModified Boolean Default: false
Allow the request to be successful only if the response has changed since the last request. This is done by checking the Last-Modified header. Default value is false, ignoring the header.
cache Boolean Default: true
Added in jQuery 1.2, if set to false it will force the pages that you request to not be cached by the browser.
$.ajax({
type: "GET",
url: "static/cache.js",
dataType: "text",
cache:false,
ifModified :true
});

 

轉自:http://edu.codepub.com/2010/1020/26519.php

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

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.