用戶發(fā)送請(qǐng)求,瀏覽器會(huì)在本地查找有沒(méi)有緩存,如果已存在緩存,還需要判斷緩存是否失效,緩存沒(méi)有失效就繼續(xù)用,緩存失效了就要進(jìn)一步判斷
緩存分為協(xié)商緩存,強(qiáng)緩存
協(xié)商緩存:
通過(guò) Etag 或者 Last-Modified 進(jìn)行判斷
Etag:標(biāo)記號(hào)
Last-Modified:時(shí)間戳,所以如果改本地時(shí)間的話會(huì)有影響
如果一個(gè)資源既有 Etag 也有 Last-Modified,優(yōu)先級(jí)是 Etag > Last-Modified
判斷緩存是否失效需要在發(fā)送請(qǐng)求的時(shí)候,請(qǐng)求頭加上 If-None-Match,值是緩存資源的 Etag 或者加上 Last-Modified,服務(wù)器會(huì)判段緩存是否失效,如果已失效服務(wù)器就返回 200 和新的資源,如果沒(méi)有失效就返回 304,瀏覽器會(huì)根據(jù)服務(wù)器返回的數(shù)據(jù)進(jìn)行處理(緩存協(xié)商)

瀏覽器緩存機(jī)制