如何清除瀏覽器緩存?

web開發中常常遇到一些很奇怪的問題,例如,發現了問題,改了腳本,結果發佈後,問題依然存在,但在服務器上一看,發佈的腳本確實改了!!最後才發現,是瀏覽器緩存在做怪!!javascript

 

如今討論幾種清除瀏覽器緩存的方法。html

一種原理是HTTP Header 參數Cache-Control來清空緩存,另外一種是利用URL上添加查詢字符串來欺騙瀏覽器強制從服務端讀取數據,避免緩存。java

 

1利用HTTP協議清空jquery

 

Cache-Control 的參數包括:web

    • max-age=[單位:秒 seconds] — 設置緩存最大的有效時間. 相似於 Expires, 可是這個參數定義的是時間大小(好比:60)而不是肯定的時間點.單位是[秒 seconds].
    • s-maxage=[單位:秒 seconds] — 相似於 max-age, 可是它只用於公享緩存 (e.g., proxy) .
    • public — 響應會被緩存,而且在多用戶間共享。正常狀況, 若是要求 HTTP 認證,響應會自動設置爲 private.
    • private — 響應只可以做爲私有的緩存(e.g., 在一個瀏覽器中),不能再用戶間共享。
    • no-cache — 響應不會被緩存,而是實時向服務器端請求資源。這一點頗有用,這對保證HTTP 認證可以嚴格地禁止緩存以保證安全性頗有用(這是指頁面與public結合使用的狀況下).既沒有犧牲緩存的效率,又能保證安全。
    • no-store — 在任何條件下,響應都不會被緩存,而且不會被寫入到客戶端的磁盤裏,這也是基於安全考慮的某些敏感的響應纔會使用這個。
    • must-revalidate — 響應在特定條件下會被重用,以知足接下來的請求,可是它必須到服務器端去驗證它是否是仍然是最新的。
    • proxy-revalidate — 相似於 must-revalidate,但不適用於代理緩存. 具體使用:

      在網頁head中添加瀏覽器

       

      ?
      1
      2
      3
      <meta http-equiv= "pragma" content= "no-cache" >
          <meta http-equiv= "content-type" content= "no-cache, must-revalidate" >
          <meta http-equiv= "expires" content= "Wed, 26 Feb 1997 08:21:57 GMT" >
      使用asp.net輸出的能夠使用

       

       

      ?
      1
      2
      3
      4
      5
      Response.Buffer = True ;
      Response.ExpiresAbsolute = Now() - 1 ;
      Response.Expires = 0 ;
      Response.CacheControl = "no-cache" ;
      Response.AddHeader "Pragma" , "No-Cache" ;

      2添加查詢字符串狀況

       

      通常有兩種方式,添加隨機數,添加時間錯緩存

      例如添加隨機數安全

       

      ?
      1
      document.write( "<script src='test.js?rnd=" +Math.random()+ "'>" )
      添加時間戳

       

       

      ?
      1
      url: "../SurveyGetRecordData.aspx?date=" +( new Date().getMilliseconds())

       

       

      能夠看到這兩種方式,都是每次強制客戶端從服務端讀取數據,根本不使用緩存,但若是是js樣式之類不多變更的呢?使用緩存,若是修改了腳本,客戶端老是使用沒有改過的腳本,等於沒有修改!!不使用緩存,腳本又不多改動,每次都從服務端讀取,沒有必要!!如何解決??

      實際上是很簡單,仍是使用查詢字符串,添加了一個相似版本號的查詢字符串,若是修改了,就把這參數改變,不然就不改,這樣,就能夠在須要時緩存,不須要時不緩存了。服務器

      例如:dom

       

      ?
      1
      <script type= "text/javascript" src= "../jquery-easyui/jquery-1.8.0.min.js?ver=1711" ></script>
相關文章
相關標籤/搜索