- 檢查強緩存:
- Expires(http1.0,時區(qū)計算可能導(dǎo)致出錯,一個時間點)
- Cache-Control(1.1,優(yōu)先級更高,可設(shè)置max-age,public, private, no-store, no-cache)
- 檢查協(xié)商緩存:
- Last-modified: 服務(wù)器端資源的最后修改時間,響應(yīng)頭部會帶上這個標(biāo)識。第一次請求之后,瀏覽器記錄這個時間,再次請求時,請求頭部帶上 If-Modified-Since 即為之前記錄下的時間。服務(wù)器端收到帶 If-Modified-Since 的請求后會去和資源的最后修改時間對比。若修改過就返回最新資源,狀態(tài)碼 200,若沒有修改過則返回 304。
- Etag/If-None-Match: 由服務(wù)器端上生成的一段 hash 字符串,第一次請求時響應(yīng)頭帶上 ETag: abcd,之后的請求中帶上 If-None-Match: abcd,服務(wù)器檢查 ETag,返回 304 或 200。
last-modified 和 Etag 區(qū)別:
- 某些服務(wù)器不能精確得到資源的最后修改時間,這樣就無法通過最后修改時間判斷資源是否更新。
- Last-modified 只能精確到秒。
- 一些資源的最后修改時間改變了,但是內(nèi)容沒改變,使用 Last-modified 看不出內(nèi)容沒有改變。
- Etag 的精度比 Last-modified 高,屬于強驗證,要求資源字節(jié)級別的一致,優(yōu)先級高。
建議緩存:css、js、圖標(biāo)、html、可下載內(nèi)容