瀏覽器的緩存機制基於HTTP消息的緩存標識符。當瀏覽器在第壹次向服務器發出請求後獲得請求結果時,它將根據響應消息中HTTP頭的緩存標識符來決定是否緩存結果。
瀏覽器緩存策略分為兩種:強制緩存和協商緩存。
強制緩存不向服務器發送請求,而是直接從緩存中讀取資源。可以看到請求返回的狀態碼是200,大小表示緩存的位置。
瀏覽器讀取緩存的順序是內存-& gt;磁盤。
三級緩存原則(訪問緩存優先級):
在瀏覽器中,瀏覽器將js、字體、圖片等文件解析後直接存儲到內存緩存中,因此在刷新頁面時,只需要直接從內存緩存中讀取即可;css文件將存儲在硬盤文件中,因此每次渲染頁面時,都需要從硬盤中讀取緩存。
為什麽CSS在硬盤緩存中?
因為CSS文件壹旦加載就可以呈現,所以我們不經常讀取它,所以它不適合緩存在內存中,但js等腳本可能會隨時執行。如果腳本在磁盤中,我們需要在執行它們時將它們從磁盤提取到內存中,因此IO開銷非常高,這可能會導致瀏覽器失去響應。
如果上次修改了服務器的資源》:If-Modified-Since的字段值
然後再次返回狀態代碼為200的資源;否則,它返回到304,這意味著資源不更新,緩存的文件可以繼續使用。
If-None-Match的字段值=服務器上資源的Etag值。
如果壹致,則返回304,這意味著不更新資源,繼續使用緩存文件;如果不壹致,將再次返回狀態代碼為200的資源文件。
ETag和上次修改時間之間的差異
參考鏈接:
blogs.com/suihang/p/12855345.html
/p/54cc04190252