Web 緩存機制 與 緩存策略

[toc]chrome

緩存的做用

  1. 減小帶寬
  2. 下降原始服務器壓力
  3. 下降距離,網絡形成的延時問題

1. 類別

1.1 私有緩存

1.1.1 瀏覽器緩存

瀏覽器會在咱們的硬盤上開闢一塊控件來存儲資源副本,一個請求從瀏覽器緩存裏調出幾乎是當即顯現出來的,好比一張圖片。 首頁通常不會被緩存瀏覽器

Cache-Control
  1. no-cache 強制在緩存前發送帶驗證器的請求到服務器

備註:緩存

  1. 具體實現和瀏覽器有關,在chrome中測試永遠返回 200 OK,由於請求頭中不會帶有校驗信息(無論請求頭和響應頭誰設置了)。可是Safari中,會先去驗證。
  2. 從字面上看很容易把no-cache理解成‘不緩存’,但事實上表明不緩存過時的資源,緩存會向源服務器進行有效期確認後處理資源,no-store纔是真正的不緩存資源
  1. no-store 不緩存
  2. max-age( s ) 設置瀏覽器緩存的最大週期, 單位爲秒

備註:服務器

  1. 在緩存週期(新鮮期)內, 請求不會去訪問服務端資源, 直接去緩存取副本資源,並返回狀態200 from cache;
  2. 若是資源更新了, 緩存新內容, 返回 200;
  3. 過了新鮮期後,請求會帶着驗證器訪問服務器, 若是資源沒有變化, 則繼續取的是緩存數據, 並返回304 Not Modified, 並更新新鮮度;
  4. 若是服務端已沒有此資源, 刪除緩存, 返回404;
  5. 若是參數爲0,那麼緩存服務器一般會將請求轉向源服務器;
  1. s-maxage( s ) 設置所爲用戶共享緩存的緩存存儲的最大週期,對於像同一個用戶返回響應的服務器來講這個指令沒有任何做用。
  2. Expires HTTP1.1 已經拋棄,建議用 max-age
驗證器
  1. if-match 一般是數據內容的 mdn 值,由原始服務器生成。若是值與ETage值相同,才返回資源。(if-None-match與之相反)

服務端相應的爲 ETag網絡

  1. if-Modified-Since:是最後更新時間,精確到s。

服務端相應的爲 Last-modified負載均衡

1.2 共享緩存

1.2.1 代理服務器緩存 (ISP(Internet Service Provider)

1.2.2 網關緩存 (CDN content delivery network)

多半是網站管理員部署,一般使用某種形式的負載均衡器,使多個網關看起來就像是原服務器。CDN(內容分發網絡Content delivery network)爲整個或部分網絡分配網關緩存,而後把這些緩存賣給須要的網站。ide

2. 緩存的流程圖

緩存流程圖

3. 緩存可能產生的問題

  1. 可能會形成資源更新不及時

    建議更新資源的時候,更新資源名稱測試

  2. 跟蹤訪問量不方便

    能夠以埋點的方式檢測訪問量,設置流量很小的請求不進行緩存網站

相關文章
相關標籤/搜索