避免Ie下的js緩存問題


防止網頁被客戶端IE緩存 (該網頁轉載至http://www.cnblogs.com/eflylab/archive/2009/03/19/1416372.html

     很多開發人員在維護公司運營的網站項目時,可能經常會遇見一個問題就是,編輯人員又抱怨,首頁生成了靜態頁面,為何我訪問內容依然是舊的!也許這時你會向她們解釋,這是由於IE為加快訪問WEB的速度,緩存了你之前瀏覽的頁面.此時其他人訪問應該是新的內容.但人們總是只相信自己的眼睛,相信自己所看到的,所以她們會認為別人訪問時也是舊的內容!

     對於這樣的問題開發人員就要想辦法防止瀏覽器緩存頁面,這里提供幾種解決方案!

     解決緩存的原理:get請求地址不一樣,瀏覽器就不會取緩存,而是向服務器端發送請求

      1.用戶訪問頁面時,隨機的生成一個串當參數加在URL后,這樣每次URL不同,瀏覽器會重新到服務器請求加載.但此方法顯然不友好,如果是公司的首頁.沒有誰會願意在域名后還看加一長串的字符!  這種方法適合列表頁中顯示圖片的路徑,在圖片的路徑后加"?+new Random().next()",這樣上傳圖片后,就可以實時的顯示新的圖片。

      2.將首頁設置一個動態頁面refreshIndex.aspx.此頁面的加載事件PageLoad中定入以下代碼

Server.Transfer( " 首頁靜態頁面路徑 " );

這樣其實就不是靜態頁面了,但他又比動態頁面稍好.因為不用頻繁的訪問數據庫!在稍微犧牲一點性能的前提下,可以解決方案一的不友好性.

     3.利用HTML元數據META,在HTML頭設置如下屬性

< META HTTP-EQUIV ="Pragma" CONTENT ="no-cache" > < META HTTP-EQUIV ="Cache-Control" CONTENT ="no-cache" > < META HTTP-EQUIV ="Expires" CONTENT ="0" >
告訴瀏覽器不要緩存本頁面,但這種方法並不是總有效,且只支持IE5及以上版本.為更好的解決緩存問題,還需要在HTML文檔結尾處添加
< HEAD >     < META HTTP-EQUIV ="PRAGMA" CONTENT ="NO-CACHE" > </ HEAD >
具體原因可以參見 http://support.microsoft.com/kb/222064 有時我們使用JS文件來存放數據,為了防止JS文件更新后用戶讀取的是緩存,可以這樣使用
< script language ="javascript" type ="text/javascript" >     // 防止客戶端緩存JS文件造成數據更新不及時     document.write( " <s " + " cript type='text/javascript' src='/CacheData/json/StockInfo.js? " + new Date() + " '></scr " + " ipt> " ); </ script >
或者
<!-- 以下方法僅支持aspx頁面 --> < script language ="javascript" type ="text/javascript" src ="/jslib/StockInfo.js?t=<%=DateTime.Now %>" ></ script >


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM