【面試常問】強緩存和協商緩存

WEB緩存機制

1. 類別

  • 數據庫緩存
  • CDN緩存(Content Delivery Network 內容分發網絡)
  • 代理服務器緩存
  • 瀏覽器緩存(http緩存)
  • 應用層緩存(代碼層面上,通過代碼邏輯將請求過的數據緩存起來)

2. Cache-Control

  • no-cache 優先詢問服務器
  • no-store 禁止本地存儲,每次從服務器下載
  • public 可以被代理服務器緩存
  • private 只能被客戶端緩存
  • max-age 設置資源被緩存的最長時間

3. 名詞

  • 強緩存(Expires/max-age)

強致緩存。在HTTP1.0中強緩存通過Expires響應頭實現。
在HTTP1.1中,Cache-control響應頭實現,其中max-age=xxx表示緩存資源將在xxx秒後過期。

  • 協商緩存(Last-Modified/E-tag)

協商緩存。在HTTP1.0中第一次請求資源時通過服務器設置Last-Modified響應頭,填入最後修改時間。在之後的每次請求中都會在請求頭中帶上If-Modified-Since字段,如果未更新就返回304,指導瀏覽器從本地緩存中讀取。
在HTTP1.1中,Etag設置響應頭緩存標誌。請求頭附帶If-None-Match。

  • 強緩存和協商緩存的區別總結:
  1. 強緩存只有首次請求會跟服務端通信,讀取緩存資源時不用發送請求。返回200。
  2. 協商緩存總會與服務器交互,第一次是拿數據和E-tag的過程,之後每次憑E-tag詢問是否更新。命中緩存返回304。
  3. 二者之間最大的區別就是:強緩存只通信一次;協商緩存每次都通信詢問。

4. 請求頭

  • If-Modified-Since
  • If-Unmodified-Since
  • If-None-Match
  • If-Match

5. 參考鏈接

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章