1. 程式人生 > >HTTP緩存控制 總結

HTTP緩存控制 總結

響應 ref .com 更改 o-c meta 時間 pri public

  

一、HTTP響應頭、請求頭中與緩存控制的相關字段

二、一個頁面訪問緩存的流程

三、三種刷新的實際操作

四、如何設置緩存

一、HTTP響應頭、請求頭中與緩存控制的相關字段

  瀏覽器向服務器發起請求後,服務器的響應頭中一般會包含以下與緩存相關的字段:

  1.Expires:過期時間。(HTTP 1.0的字段)

  瀏覽器再次發起請求的時候會先檢查是否超過這個時間,如果沒超過則直接從緩存中讀取信息。但是如果瀏覽器的時間和服務器的時間不一致,就會出現問題。

  2.Cache-control:max-age=6000(毫秒)/no-cache/no-store/private/public (HTTP 1.1的字段)

  同時設置Expires和max-age的情況下,使用max-age

  3.Last-Modified:最後一次修改時間。

  4.Etag:被請求變量的實體標記。它的計算是通過服務器端的算法得來的,優先級高於Last-Modified。

  瀏覽器再次向服務器發起請求,請求頭中一般會包含以下與緩存相關的字段:

  1.Cache-control:max-age=0

  2.If-Modified-Since:把響應頭中的Last-Modified發至服務端與被請求資源的最後修改時間進行對比

   若最後修改時間大於If-Modified-Since,則表明資源已更改,響應整個資源返回200,否則返回304。

  3.If-None-Match:把響應頭中的Etag發至服務端與服務端的實體標記進行對比

   若相同,則表明資源未更改返回304,否則響應整個資源返回200。

  (Etag/If-None-Match的優先級高於Last-Modified/If-Modified-Since)

二、一個頁面訪問緩存的流程

  技術分享

三、三種刷新的實際操作

  1.輸入URL,按回車:瀏覽器發現緩存中有這個資源,就直接從緩存中拿。

  2.F5:即使緩存中有這個資源,也會去服務器確認該資源是否更改。

  3.Ctrl+F5:先把緩存中的資源刪了,再去服務器請求完整的資源文件。

四、如何設置緩存

  1.配置apache或ngix服務器(不太了解該方式)

  2.在服務器響應頭中動態設置

  3.在前端HTML頁面的Meta標簽中設置(該方法並不是所有瀏覽器都支持,且代理服務器不支持該方法,因為代理服務器不會解析HTML頁面)

  <meta http-equiv="cache-control" content="max-age=600000" />

  <meta http-equiv="expires" content="..." />

  4.在請求中用setRequestHeader()方法設置請求頭,可設置不使用緩存或者更改相應字段(如設置If-None-Modified等)

  (此文為個人對緩存控制的一些梳理,歡迎大家共同交流學習~)

HTTP緩存控制 總結