意義
用戶端已有的快取副本仍然有效,因此伺服器不傳送本文。它回應帶有 If-None-Match 或 If-Modified-Since 的條件式請求。
常見原因
- If-None-Match 中的 ETag 與目前版本相符
- 資源自 If-Modified-Since 以來沒有變更
- 瀏覽器正在重新驗證快取的靜態資源
解決方法
用戶端或訪客
使用快取的本文。如果內容看起來過時,可能是驗證器有誤;強制重新載入或檢查 ETag 的產生方式。
網站或 API 的維護者
產生穩定的 ETag(負載平衡器後方的各台伺服器要一致),並送出與 200 相同的快取標頭。
回應範例
HTTP/1.1
HTTP/1.1 304 Not Modified
Date: Tue, 07 Oct 2025 09:30:00 GMT
Server: nginx
ETag: "33a64df5"
Cache-Control: max-age=3600 規範
常見問題
› 304 是錯誤嗎?
不是。它告訴用戶端快取仍是最新的,藉此節省頻寬。
› 為什麼部署後使用者仍看到舊檔案?
快取標頭允許使用舊副本。靜態資源使用帶指紋的檔名,HTML 使用較短的 max-age 並搭配驗證。