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。
- 強緩存和協商緩存的區別總結:
- 強緩存只有首次請求會跟服務端通信,讀取緩存資源時不用發送請求。返回200。
- 協商緩存總會與服務器交互,第一次是拿數據和E-tag的過程,之後每次憑E-tag詢問是否更新。命中緩存返回304。
- 二者之間最大的區別就是:強緩存只通信一次;協商緩存每次都通信詢問。
4. 請求頭
If-Modified-Since
If-Unmodified-Since
If-None-Match
If-Match