關於緩存的tips——HTTP權威指南讀書心得(十三)

  上一章介紹了緩存新鮮度判斷的基本原理,本章對於緩存新鮮度判斷方法進行一些補充(更新間隔略長略長。。)。web

          關於緩存的TIPS

 

  服務器能夠經過http定義的幾種header對能夠緩存數據的存在時間進行控制,按照其優先級由高到低分別爲瀏覽器

  1. Cache-Control:no-store
  2. Cache-Control:no-cache
  3. Cache-Control:must-revalidata
  4. Cache-Control:  max-age=
  5. Expires:{date}
  6. 不附加任何信息

  Cache-Control:no-store 首部會禁止緩存對於響應進行復制,響應由服務器回送出,而後由緩存轉發到客戶端,轉發完畢後會把緩存上的響應副本刪除。緩存

  Cache-Control:no-cache 其實是容許響應緩存在本地緩存中的,只不過要使用緩存中的文件,則必須與原始服務器通訊,驗證緩存內容是否足夠新鮮。若是足夠新鮮才能夠會送給客戶端使用。服務器

  Cache-Control:must-revalidata 有些緩存爲了提升性能,會選擇性的向客戶端提供一些過時的數據。must-revalidata首部告訴緩存,若是要提供過時的數據給客戶端,則必須向服務器驗證數據的新鮮度,驗證經過纔可使用過時的數據。緩存能夠自由的向客戶端提供新鮮的數據性能

  Cache-Control:max-age 該首部表示從服務器將數據傳輸過來的時間點起,能夠認爲該數據新鮮的秒數。服務器能夠將max-age設置爲0,從而讓每次訪問時緩存都進行刷新。網站

    Cache-Control:max-age=0spa

  Expires:{date} 該首部直接設置緩存的過時日期。因爲不少服務器的時鐘都不一樣步,使用絕對的時間點設置過時時間可能出現問題。代理

          客戶端控制緩存新鮮度

 

  瀏覽器都有刷新或者重載按鈕,能夠強制瀏覽器或者代理緩存對可能過時的內容進行刷新。刷新按鈕會在請求header中加入Cache-Control首部,這個請求會強制進行再驗證,或者直接從原始服務器獲取資源。刷新的確切行爲會依瀏覽器類型而不一樣。code

客戶端Cache-Control請求指令
Cache-Control:max-stable={s} 緩存能夠隨意提供過時的數據,若是指定了{s},則告知緩存在{s}這個時間段內,數據不能過時。
Cache-Control:mini-fresh={s} 至少在將來{s}秒內,緩存提供的數據必須是新鮮的。
Cache-Control:max-age={s} 緩存不能夠返回緩存時間超過{s}秒的數據。
Cache-Control:no-cache 客戶端只接受進行過新鮮度再驗證的緩存數據或者直接從服務器返回的數據。
Cache-Control:no-store 緩存應該刪除全部客戶端相關的緩存數據。
Cache-Control:only-if-cached 只有緩存中有數據副本,客戶端纔會獲取一份副本。

    

         HTML中的HTTP-EQUIV

 

  爲了讓方便在網站項目中控制緩存,HTML提供了<META HTTP-EQUIV>標籤,這個標籤能夠設置與文檔有關的header。blog

  

1 <HTML>
2     <HEAD>
3         <TITLE>TEST</TITLE>
4         <META HTTP-EQUIV="Cache-control" CONTENT="no-cache">
5     </HEAD> 
6 ......   

  該標籤能夠在請求中插入一個首部字段,首部名稱由屬性HTTP-EQUIV 設置,首部內容由CONTENT設置。

  這個標籤讓咱們可讓咱們在頁面中方便的設置響應首部,可是因爲解析這個元素會給服務器增長額外的負擔,因此只有不多web服務器和代理支持這個特性。所以,不建議經過設置這個標籤來控制緩存,正確的配置header中的字段纔是可靠的緩存控制方法。

相關文章
相關標籤/搜索