HTTP緩存

http緩存

分享文章:https://www.cnblogs.com/chenqf/p/6386163.html

Cache-control

Cache-control 是HTTP/1.1 定義,取代了之前的Expires(過(guò)期時(shí)間),
重要的參數(shù):

  • "max-age = <seconds>"
    設(shè)置指令從請(qǐng)求開(kāi)始,允許響應(yīng)被重用的時(shí)間,不向服務(wù)器發(fā)送請(qǐng)求,直接取瀏覽器緩存.

  • public
    表明響應(yīng)可以被任何對(duì)象(包括:發(fā)送請(qǐng)求的客戶端,代理服務(wù)器,等等)緩存,不是必須.聲明max-age就OK

  • private
    表明響應(yīng)只能被單個(gè)用戶緩存,不能作為共享緩存(即代理服務(wù)器不能緩存它)

  • no-store
    直接禁止瀏覽器以及中間代理緩存,每次都下載完整的響應(yīng)

  • no-cache
    在使用已存儲(chǔ)的緩存數(shù)據(jù)前,發(fā)送帶驗(yàn)證器(ETag)的請(qǐng)求到服務(wù)器.

ETag

服務(wù)器通過(guò)某種算法,給資源計(jì)算出一個(gè)標(biāo)識(shí)符,返回響應(yīng)時(shí)在頭部加上"Etag:唯一標(biāo)識(shí)符",客戶端保留Etag字段,下次請(qǐng)求時(shí)通過(guò)請(qǐng)求頭 "If-None-Match: ETag-value"后端校驗(yàn)相同就直接回送304,告訴瀏覽器使用緩存.瀏覽器會(huì)替我們完成所有工作:它會(huì)自動(dòng)檢測(cè)之前是否指定了驗(yàn)證令牌,它會(huì)將驗(yàn)證令牌追加到發(fā)出的請(qǐng)求上,并且它會(huì)根據(jù)從服務(wù)器接收的響應(yīng)在必要時(shí)更新緩存時(shí)間戳,我們唯一要做的就是確保服務(wù)器提供必要的 ETag 令牌。

Last-Modified

服務(wù)器將資源傳遞給客戶端時(shí),會(huì)將資源最后更改的時(shí)間以“Last-Modified: GMT”的形式加在實(shí)體首部上一起返回給客戶端。
客戶端會(huì)為資源標(biāo)記上該信息,下次再次請(qǐng)求時(shí),會(huì)把該信息附帶在"If-Modified-Since: Last-Modified-value"一并帶給服務(wù)器去做檢查,若傳遞的時(shí)間值與服務(wù)器上該資源最終修改時(shí)間是一致的,則說(shuō)明該資源沒(méi)有被修改過(guò),直接返回304。

如果 Last-Modified 和 ETag 同時(shí)被使用,則要求它們的驗(yàn)證都必須通過(guò)才會(huì)返回304,若其中某個(gè)驗(yàn)證沒(méi)通過(guò),則服務(wù)器會(huì)按常規(guī)返回資源實(shí)體及200狀態(tài)碼。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容