用戶發送請求,瀏覽器會在本地查找有沒有緩存,如果已存在緩存,還需要判斷緩存是否失效,緩存沒有失效就繼續用,緩存失效了就要進一步判斷
緩存分為協商緩存,強緩存
協商緩存:
通過 Etag 或者 Last-Modified 進行判斷
Etag:標記號
Last-Modified:時間戳,所以如果改本地時間的話會有影響
如果一個資源既有 Etag 也有 Last-Modified,優先級是 Etag > Last-Modified
判斷緩存是否失效需要在發送請求的時候,請求頭加上 If-None-Match,值是緩存資源的 Etag 或者加上 Last-Modified,服務器會判段緩存是否失效,如果已失效服務器就返回 200 和新的資源,如果沒有失效就返回 304,瀏覽器會根據服務器返回的數據進行處理(緩存協商)
瀏覽器緩存機制