標籤:前端 content control 1.0 max-age 16px 交流 idt ges
一、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標籤中設定(該方法並不是所有瀏覽器都支援,且Proxy 伺服器不支援該方法,因為Proxy 伺服器不會解析HTML頁面)
<meta http-equiv="cache-control" content="max-age=600000" />
<meta http-equiv="expires" content="..." />
4.在請求中用setRequestHeader()方法佈建要求頭,可設定不使用緩衝或者更改相應欄位(如設定If-None-Modified等)
(此文為個人對緩衝控制的一些梳理,歡迎大家共同交流學習~)
HTTP緩衝控制 總結