http 緩存

4種緩存方式

HTTP緩存控制參考

分類和區(qū)別

  • 強緩存: 規(guī)定了過期時間
響應(yīng)header 描述 常用響應(yīng)返回內(nèi)容 推薦 特點 缺點 場景
Cache-Control 在多少秒內(nèi)進行緩存 public, max-age=秒 固定時間
Expires 在此時間前進行緩存 格林威治時間 絕對時間 受客戶端時間影響 兼容http1.0
  • 協(xié)商緩存: 需進行比較,會返回304狀態(tài)碼
響應(yīng)header 請求header 描述 常用響應(yīng)返回內(nèi)容 推薦 特點 缺點 場景
ETag If-None-Match 固定字符串 md5 檢測文件完整性
Last-Modified If-Modified-Since 在某時間后沒再更改 格林威治時間 瀏覽器根據(jù)返回的時間自己決定緩存 瀏覽器差異

Tips:
Cache-ControlExpires一樣,都是在某個時間未到來前進行緩存
默認第一個請求(主頁)的請求頭里會自動加上Cache-Control: max-age=0,這個請求無論響應(yīng)頭的Cache-Control是什么設(shè)置都不會緩存,減少請求次數(shù)同時減少下載次數(shù)
ETag方式通過檢查request.headers里的if-None-Match里的32位md5字符串來檢測文件完整性決定是否更新, 如果md5匹配成功則返回304,只減少下載次數(shù)

Cache-Control 與 Last-Modified / if-Modified-Since 比較

對于所有可以緩存的資源都可以同時使用這兩種策略進行緩存
Cache-Control/Expires的優(yōu)先級要高于Last-Modified/ETag

  • Cache-Control:
    1設(shè)置固定過期時間
    2文件在過期時間沒到之前都不進行請求也不進行下載更新
    3解決方法只能通過加時間戳改變文件名解決

  • Last-Modified / if-Modified-Since:
    1通過給文件內(nèi)容進行哈希算法來確定文件內(nèi)容版本
    2通過對請求頭if-Modified-Since的字符串來檢測文件內(nèi)容有沒改變
    3文件內(nèi)容沒改變則不更新資源,跟請求資源的文件名關(guān)系不大但每次都需要請求
    4可以通過標(biāo)識文件版本名、加長緩存時間的方式來減少304響應(yīng)。

結(jié)論

1需要兼容HTTP1.0的時候需要使用Expires,不然可以考慮直接使用Cache-Control
2需要處理一秒內(nèi)多次修改的情況,或者其他Last-Modified處理不了的情況,才使用ETag,否則使用Last-Modified。
3對于所有可緩存資源,需要指定一個Expires或Cache-Control,同時指定Last-Modified或者Etag。
4可以通過標(biāo)識文件版本名、加長緩存時間的方式來減少304響應(yīng)。
HTTP緩存控制參考

MD5

hash算法
任何文件或數(shù)據(jù)都可以通過MD5算法轉(zhuǎn)化成一個32位的固定字符串
場景:
1檢查緩存的文件內(nèi)容是否有變化
2檢查下載文件是否下載完畢(cat xxx.mp4 | md5)

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

相關(guān)閱讀更多精彩內(nèi)容

  • 本文內(nèi)容大多參考《圖解HTTP》一書 一. 認識代理服務(wù)器 所以講緩存為什么要先扯代理服務(wù)器?別急,讓我們看一下一...
    流光號船長閱讀 2,099評論 0 10
  • 網(wǎng)絡(luò)特有的延遲以及數(shù)據(jù)傳輸?shù)某杀?,制約互聯(lián)網(wǎng)快速獲取Web資源。為此,HTTP協(xié)議引入緩存以空間換時間,使瀏覽器緩...
    大頭8086閱讀 3,188評論 2 12
  • 每個瀏覽器都自帶了 HTTP 緩存實現(xiàn)功能。您只需要確保每個服務(wù)器響應(yīng)都提供正確的 HTTP 標(biāo)頭指令,以指示瀏覽...
    _july77閱讀 344評論 0 0
  • HTTP Headers 1. 通用首部字段:就是請求報文和響應(yīng)報文都能用上的字段 2. 請求首部字段 3. 響應(yīng)...
    萊斯塔特閱讀 439評論 0 0
  • 第一杯敬你 愿你安好,我便無恙 從此不再相見 我干了,你隨意 第二杯敬你 愿你生活有酒有詩有依靠 愿我流浪有歸宿 ...
    醉夢生墟閱讀 119評論 0 0

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