max-age 和 expires
服務(wù)器用 http/1.0+ 的 expires 首部或者 http/1.1 cache-control: max-age 首部來指定過期日期腕巡,兩者作用一樣耍休,但有一些偏差。
max-age 是相對于文檔生成的時間,而 expires 受到服務(wù)端和客戶端之間的時間偏差的影響。
Etag 和 last-modify
即使緩存過期,如果文件在緩存期間沒有更新過禽拔,則可以繼續(xù)使用緩存。使用 if-None-Match 和 Etag 或者 if-Modified-since 和 last-modify 都可以判斷文件是否有更新室叉。
為什么使用 Etag:
- 文件被重寫睹栖,但內(nèi)容不變
- 有些文件修改并不重要,例如注釋
- last-modify 使用的單位是秒茧痕,一些場景上不適用