簡事二三 之 http緩存機制

http緩存相關概念:nginx

請求頭:瀏覽器向服務器發送請求的數據,資源web

響應頭:服務器向瀏覽器相應數據,告訴瀏覽器我是誰,我要怎麼作。如,我是nginx,給你的資源是正確的200 仍是錯誤的404,我告訴你須要緩存多久。瀏覽器

緩存優先級: pragma → cache-control → expires → ETag → last-modified緩存

Http1.0: Pragma(已廢棄), expires服務器

Http1.1: Cache-control, ETag, Last-Modified加密

http緩存能夠分爲兩類: 強制緩存,協商緩存代理

  1. 強制緩存:expires, Cache-control
    1). Expires: 緩存過時時間,GMT時間,以客戶端時間做爲參考
    2). Cache-control: 相對時間,屬性值分爲:
    1. Private:僅容許客戶端緩存
    2. Public:客戶端和代理服務器均可以緩存
    3. Max-age=xxx:緩存內容將於xxx秒後失效
    4. No-cache:須要使用協商緩存來驗證緩存數據
    5. No-store:全部內容都不會緩存,強制緩存、協商緩存都不會觸發

  2. 協商緩存:Last-Modified, ETag
    1)Last-Modified:定義上一次修改時間,再次請求時帶請求頭if-modified-since,與服務器進行對比
    2)ETag:加密字符串,再次請求時帶請求頭if-none-match,與服務器對比

對於強制緩存,服務器通知瀏覽器一個緩存時間,在緩存時間內,下次請求直接用緩存,不在時間內則執行協商緩存策略。cdn

對於協商策略,將緩存信息中的ETag和Last-Modified經過請求發送給服務器,有服務器校驗,返回304狀態碼時,瀏覽器直接使用緩存。blog

瀏覽器第一次請求:資源

瀏覽器請求 -> 無緩存 -> 向web服務器請求 -> 請求響應,緩存協商 -> 呈現

瀏覽器再次請求:


常見的請求頭:


常見的響應頭:

相關文章
相關標籤/搜索