瀏覽器緩存概念以及流程

請求資源流程

瀏覽器行為的影響

  • 在瀏覽器輸入地址,然后回車:
    會進行上述完整流程
  • f5刷新
    則忽略資源有效時間,直接帶相關條件(If-None-Match ( If-Modified-Since))去請求服務器
  • ctrl+f5
    忽略資源有效時間,忽略條件,直接請求服務器資源

cache-control


緩存驅逐

驅逐算法用于將陳舊的緩存副本替換為新鮮的,注意,一個陳舊的緩存是不會直接被清除或忽略的,當客戶端發起一個請求時,緩存檢索到已有一個對應的陳舊緩存,則緩存會先將此請求附加一個If-None-Match頭,然后發給目標服務器,以此來檢查該緩存是否是依然還是算新鮮的,若服務器返回了 304 (Not Modified)(該響應不會有帶有實體信息),則表示此資源副本是新鮮的,這樣一來,可以節省一些帶寬。若服務器通過 If-None-Match 或 If-Modified-Since判斷后發現已過期,那么會帶有該資源的實體內容返回。


vary

vary會指定一個字段,只有請求頭中的這個字段與緩存資源中的這個字段相同時,才會返回緩存資源,否則請求服務器。
用vary頭有利于內容服務的動態多樣性。例如,使用Vary: User-Agent頭,緩存服務器需要通過UA判斷是否使用緩存的頁面。如果需要區分移動端和桌面端的展示內容,利用這種方式就能避免在不同的終端展示錯誤的布局。


加速資源

一些長期不更新的文件,緩存時間會很長,更新它們也很有難度。在這些資源名稱后面加入版本號,可以解決此問題


max-age expires

max-age 表示緩存資源的有效時間
expires 表示緩存自愿的到期時間
如果兩個值同時存在,那么max-age優先級更高



etag

一般是一個文件的散列值,即文件的md5簽名,用于對比顯示文件是否有變化


Last-Modified

一個文件上次修改的時間


最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容