發現雖然都是緩存中去文件但還是有一些區別的。
webkit資源的分類:
webkit的資源分類主要分為兩大類:主資源和派生資源。
http狀態碼:
200 from memory cache
不訪問服務器,直接讀緩存,從內存中讀取緩存。此時的數據時緩存到內存中的,當kill進程后,也就是瀏覽器關閉以后,數據將不存在。
但是這種方式只能緩存派生資源。
200 from disk cache
不訪問服務器,直接讀緩存,從磁盤中讀取緩存,當kill進程時,數據還是存在。
這種方式也只能緩存派生資源
304 Not Modified
訪問服務器,發現數據沒有更新,服務器返回此狀態碼(不返回資源)。然后從緩存中讀取數據。
三級緩存原理:
先去內存看,如果有,直接加載
如果內存沒有,擇取硬盤獲取,如果有直接加載
如果硬盤也沒有,那么就進行網絡請求
加載到的資源緩存到硬盤和內存
所以我們可以來解釋這個現象
圖片為例:
訪問-> 200 -> 退出瀏覽器
再進來-> 200(from disk cache) -> 刷新 -> 200(from memory cache)
http header:(與緩存有關的請求頭部)
max-age
web中的文件被用戶訪問(請求)后的存活時間,是個相對的值,相對Request_time(請求時間)
Expires
Expires指定的時間根據服務器配置可能有兩種:(GMT時間)
文件最后訪問時間
文件絕對修改時間
如果max-age和Expires同時存在,則被Cache-Control的max-age覆蓋
last-modified
WEB 服務器認為對象的最后修改時間,比如文件的最后修改時間,動態頁面的最后產生時間
ETag
對象(比如URL)的標志值,就一個對象而言,文件被修改,Etag也會修改
Cache-Control
簡單理解,強緩存
前兩者來驗證資源新鮮度,后兩者來驗證資源的有效值。
————————————————
版權聲明:本文為CSDN博主「guoxiaxing」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/hahahahahahahaha__1/java/article/details/83213644