網路上教你「如何禁止快取」的文章滿天飛,但「瀏覽器如何利用快取、如何處理快取」的深度解析卻鮮見。本文基於實測與原碼分析,系統梳理快取行為細節。
304 Not Modified 讓瀏覽器繼續用快取,實際效益與處理細節?| 標頭 | 方向 | 作用 |
|---|---|---|
Expires |
Response | 絕對過期時間(HTTP/1.0) |
Cache-Control |
Request/Response | 相對過期、驗證模式、私有/共享快取(HTTP/1.1 主力) |
Last-Modified |
Response | 資源最後修改時間 |
If-Modified-Since |
Request | 條件請求:若未修改回 304 |
ETag |
Response | 實體標籤(強驗證器) |
If-None-Match |
Request | 條件請求:ETag 比對 |
protected long getLastModified(HttpServletRequest req) {
// 返回自 1970-01-01 00:00:00 的毫秒數
// 負數表示不支援/未知
}
Last-Modified 標頭If-Modified-Since,Container 自動比對決定回 200 或 304工具 → 網際網路選項 → 一般 → 臨時網際網路檔案 → 設定:
絕大多數用戶用「自動」預設值,**伺服器端正確輸出快取標頭是唯一可控手段**。
Cache-Control: no-store, no-cache, must-revalidatePragma: no-cacheExpires: 0Cache-Control: public, max-age=31536000(一年)Last-Modified/ETag 支援條件請求Server 端快取技術(頁面片段快取、資料物件快取、分散式快取 Memcached/Redis 整合)與實戰案例分析。