從輸入一個URL地址到瀏覽器完成整個渲染的過程
阿新 • • 發佈:2021-10-29
-
瀏覽器查詢當前URL是否存在快取(http快取機制)
快取過程分析
瀏覽器與伺服器通訊的方式為應答模式,即客戶端發起請求-伺服器響應請求。
-
瀏覽器每次向伺服器請求的結果和標識,都會存入瀏覽器快取中
-
瀏覽器向伺服器發起請求後,會先從快取中查詢快取結果和快取標識,再進行下一步判斷是否需要再次向伺服器發起請求。
HTTP請求快取分為兩個部分,強制快取和協商快取。
強制快取
強制快取就是瀏覽器向快取中檢視結果,並根據快取結果和快取規則決定是否使用該快取結果。
- 強制快取失效,不存在快取結果跟快取標識。直接向伺服器發起請求(等同於第一次請求)。
- 強制快取失效,存在快取結果跟快取標識。
- 強制快取生效,存在快取結果跟快取標識,未失效。直接使用瀏覽器快取。
強制快取規則
控制強制快取的欄位為Expires和Cache-Control,其中Cache-Control的優先順序比Expires高。
協商快取
協商快取就是在快取結果和快取標識存在但是失效的情況下,由伺服器根據收到的快取標識決定是否使用快取的過程。
- 伺服器發現資源無更新,協商快取生效,返回狀態碼304。
- 伺服器發現資源已更新,協商快取失效,返回新的內容,狀態碼200。
協商快取規則
控制協商快取的欄位有:Last-Modified/If-Modified-Since和Etag/If-None-Match。
- Last-Modified是該資源在伺服器中最後一次修改的時間。
- If-Modified-Since是客戶端在請求伺服器時,攜帶Last-Modified欄位,告訴伺服器上次返回的資源的最後修改時間。伺服器收到該欄位後,與該資源在伺服器最後被修改的時間做對比,如果不一致,則重新返回資源,否則使用快取檔案。
- Etag是伺服器響應資源時,返回的該資源的唯一標識。
- If-None-Match是客戶端再次發起請求時,攜帶資源的Etag欄位,伺服器收到請求後,發現有If-None-Match欄位,與該資源在伺服器上的Etag欄位的值作比較,若相等則返回304表示無更新,不相等則返回新資源。
注:Etag / If-None-Match優先順序高於
瀏覽器快取存放
瀏覽器快取有兩個來源:from disk cache/form memory cache
from disk cache代表硬碟中的快取;
form memory cache代表記憶體中的快取。
在瀏覽器中,會在js和圖片檔案解析執行後存入記憶體快取中;而css檔案則會存入硬碟中。
-
繼續更新