JS清除IE瀏覽器緩存的方法
更新時(shí)間:2013年07月26日 17:50:15 作者:
本文為大家詳細(xì)介紹下js中自動(dòng)清除ie緩存的幾種方法,大家可以根據(jù)自己的需求自由選擇適合自己的,希望對(duì)大家學(xué)習(xí)js有所幫助
js中自動(dòng)清除ie緩存方法 — 常用
對(duì)于動(dòng)態(tài)文件,比如 index.asp?id=... 或者 index.aspx?id=... 相信有經(jīng)驗(yàn)的程序員都知道怎樣禁止瀏覽器緩存數(shù)據(jù)了.
但是對(duì)于靜態(tài)文件(css,jpg,gif等等), 在什么場(chǎng)合下面我們需要禁止瀏覽器緩存他們,怎么做?
方法一:Dojo中我們可以用簡(jiǎn)單的方法完成:在dojo.xhrGet(包括post)等方法中都包含preventCache屬性,此屬性的含義: “默認(rèn)為啟用瀏覽器緩存,否則將通過自動(dòng)增加不同的參數(shù)來確保瀏覽器緩存失效” 我們只要把此屬性賦值為:“true”即可。
方法二:document.write("
其中 ver=113 的 113就是版本號(hào),一般都是采用 CVS 或其他工具生成的開發(fā)版本號(hào)。
這樣真正做到了應(yīng)該緩存的時(shí)候緩存靜態(tài)文件,當(dāng)版本有更新的時(shí)候從獲取最新的版本,并更新緩存。
對(duì)于圖像 來有效利用和更新緩存.
js清除瀏覽器緩存 二
為了減小瀏覽器與服務(wù)器之間網(wǎng)絡(luò)傳輸壓力,往往對(duì)靜態(tài)文件,如js,css,修飾的圖片做cache,也就是給這些文件的HTTP響應(yīng)頭加入 Expires和Cache-Control參數(shù),并指定緩存時(shí)間,這樣一定時(shí)間內(nèi)瀏覽器就不會(huì)給服務(wù)器發(fā)出任何的HTTP請(qǐng)求(除了強(qiáng)制刷新),即使在 這段時(shí)間內(nèi)服務(wù)器的js或css或圖片文件已經(jīng)更新多次,但瀏覽器的數(shù)據(jù)依然是原來最能初cache的舊數(shù)據(jù),有沒有辦法讓瀏覽器拿到已經(jīng)修改后的最新數(shù) 據(jù)呢?
有,方法是用ajax請(qǐng)求服務(wù)器最新文件,并加上請(qǐng)求頭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.
這樣瀏覽器就會(huì)把最新的文件替換掉本地舊文件。
當(dāng)然,這里還一個(gè)問題就是js必須知道服務(wù)器更新了那個(gè)js、css、圖片,利用cookie和時(shí)間版本應(yīng)該可以解決.
jquery自從1.2開始就有ifModified和cache參數(shù)了,不用自己加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
});
對(duì)于動(dòng)態(tài)文件,比如 index.asp?id=... 或者 index.aspx?id=... 相信有經(jīng)驗(yàn)的程序員都知道怎樣禁止瀏覽器緩存數(shù)據(jù)了.
但是對(duì)于靜態(tài)文件(css,jpg,gif等等), 在什么場(chǎng)合下面我們需要禁止瀏覽器緩存他們,怎么做?
方法一:Dojo中我們可以用簡(jiǎn)單的方法完成:在dojo.xhrGet(包括post)等方法中都包含preventCache屬性,此屬性的含義: “默認(rèn)為啟用瀏覽器緩存,否則將通過自動(dòng)增加不同的參數(shù)來確保瀏覽器緩存失效” 我們只要把此屬性賦值為:“true”即可。
方法二:document.write("
其中 ver=113 的 113就是版本號(hào),一般都是采用 CVS 或其他工具生成的開發(fā)版本號(hào)。
這樣真正做到了應(yīng)該緩存的時(shí)候緩存靜態(tài)文件,當(dāng)版本有更新的時(shí)候從獲取最新的版本,并更新緩存。
對(duì)于圖像 來有效利用和更新緩存.
js清除瀏覽器緩存 二
為了減小瀏覽器與服務(wù)器之間網(wǎng)絡(luò)傳輸壓力,往往對(duì)靜態(tài)文件,如js,css,修飾的圖片做cache,也就是給這些文件的HTTP響應(yīng)頭加入 Expires和Cache-Control參數(shù),并指定緩存時(shí)間,這樣一定時(shí)間內(nèi)瀏覽器就不會(huì)給服務(wù)器發(fā)出任何的HTTP請(qǐng)求(除了強(qiáng)制刷新),即使在 這段時(shí)間內(nèi)服務(wù)器的js或css或圖片文件已經(jīng)更新多次,但瀏覽器的數(shù)據(jù)依然是原來最能初cache的舊數(shù)據(jù),有沒有辦法讓瀏覽器拿到已經(jīng)修改后的最新數(shù) 據(jù)呢?
有,方法是用ajax請(qǐng)求服務(wù)器最新文件,并加上請(qǐng)求頭If-Modified-Since和Cache-Control,如下:
復(fù)制代碼 代碼如下:
$.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.
這樣瀏覽器就會(huì)把最新的文件替換掉本地舊文件。
當(dāng)然,這里還一個(gè)問題就是js必須知道服務(wù)器更新了那個(gè)js、css、圖片,利用cookie和時(shí)間版本應(yīng)該可以解決.
jquery自從1.2開始就有ifModified和cache參數(shù)了,不用自己加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.
復(fù)制代碼 代碼如下:
$.ajax({
type: "GET",
url: "static/cache.js",
dataType: "text",
cache:false,
ifModified :true
});
相關(guān)文章
bootstrap Table服務(wù)端處理分頁(后臺(tái)是.net)
這篇文章主要為大家詳細(xì)介紹了bootstrap Table服務(wù)端處理分頁,后臺(tái)是.net,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-10-10js點(diǎn)擊返回跳轉(zhuǎn)到指定頁面實(shí)現(xiàn)過程
這篇文章主要為大家詳細(xì)介紹了js點(diǎn)擊返回跳轉(zhuǎn)到指定頁面實(shí)現(xiàn)過程,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-04-04js流動(dòng)式效果顯示當(dāng)前系統(tǒng)時(shí)間
這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)流動(dòng)式時(shí)間效果的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-05-05javacript replace 正則取字符串中的值并替換【推薦】
replace() 方法用于在字符串中用一些字符替換另一些字符,或替換一個(gè)與正則表達(dá)式匹配的子串。這篇文章主要介紹了javacript replace 正則取字符串中的值并替換,需要的朋友可以參考下2018-09-09uniapp微信小程序底部動(dòng)態(tài)tabBar的解決方案(自定義tabBar導(dǎo)航)
tabBar如果應(yīng)用是一個(gè)多tab應(yīng)用,可以通過tabBar配置項(xiàng)指定tab欄的表現(xiàn),以及tab切換時(shí)顯示的對(duì)應(yīng)頁,下面這篇文章主要給大家介紹了關(guān)于uniapp微信小程序底部動(dòng)態(tài)tabBar的解決方案,需要的朋友可以參考下2022-04-04javascript實(shí)現(xiàn)數(shù)據(jù)雙向綁定的三種方式小結(jié)
本篇文章主要介紹了javascript實(shí)現(xiàn)數(shù)據(jù)雙向綁定的三種方式小結(jié),前端的視圖層和數(shù)據(jù)層有時(shí)需要實(shí)現(xiàn)雙向綁定,目前實(shí)現(xiàn)數(shù)據(jù)雙向綁定主要有三種,有興趣的可以了解一下。2017-03-03