Cache Not Working Troubleshooting
「キャッシュされない」「古い内容が残る」問題を症状起点で診断し、次に直すべき項目を整理します。入力はサーバーへ送信しません。
状態
ブラウザ内で処理します。入力はサーバーへ送信しません。RequestとResponseは空行区切りで貼れます。
使い方
症状とヘッダーを貼り付けて「切り分け」を実行します。レポートの上から順に確認すると、最短で改善項目に到達できます。
注意(このツール)
- 解析結果は貼り付けた情報の範囲に依存します。CDNやプロキシの実設定も必ず確認してください。
- 機密値(Cookie, Authorization)は伏せ字化して貼り付ける運用を推奨します。
このページについて
何をするツール?
Request/Response ヘッダー(Cache-Control, Expires, Age, ETag, Last-Modified, Vary など)をまとめて見て、キャッシュ不具合の原因候補を抽出します。
症状テキストとリソース種別(API/HTML/静的アセット)を併用して、優先度つきの修正方針を返します。
よくある症状
- 更新したのに古いコンテンツが表示される
- 毎回ネットワーク取得になりキャッシュヒットしない
- CDN経由だけ挙動が違う
- 304 が期待通り返らない
- ブラウザでは更新されるが一部ユーザーだけ古い
切り分け手順(おすすめ)
- 症状と Request/Response Headers を貼り付ける(空行区切り可)
- Diagnosis の「Likely causes」を上から確認する
- Next actions に従って 1項目ずつ修正して再観測する
- 必要に応じて個別Inspectツールで詳細確認する
推奨(リソース種別)
- API(JSON): 機密系は no-store、一般系は no-cache + ETag/Last-Modified
- HTML: no-cache + must-revalidate(または短い max-age + validators)
- 静的アセット: long max-age + immutable + versioned URL
関連ツール
- HTTP Cache Mismatch
- Cache Response Analyzer
- Cache Diagnostic
- Cache-Control Inspect
- ETag Inspect
- Last-Modified Inspect
- Vary Inspect
- Age Inspect
このツールでできること
- 症状起点でキャッシュ不具合の原因候補を抽出
- Cache-Control / Validators / Vary / Date系の矛盾検出
- リソース種別ごとの修正優先アクション提示
注意(運用)
- キャッシュはブラウザ・CDN・リバースプロキシで別々に効くため、観測点を揃えて比較してください。
- ヘッダーが正しくても、URL設計やデプロイ手順(ファイル名バージョン管理)で失敗することがあります。
- 機密情報が含まれる場合はマスクして貼り付けてください。
参照仕様
- RFC 9111(HTTP Caching)
- RFC 9110(HTTP Semantics)
- MDN: HTTP Caching
FAQ
max-age を短くすれば全て解決しますか?
いいえ。再検証(ETag/Last-Modified)や Vary、URLバージョニングと組み合わせないと問題が残ることがあります。
304 が返らないのはなぜですか?
If-None-Match / If-Modified-Since が送られていない、またはサーバー側のバリデータ比較ロジックが一致していない可能性があります。
CDNだけ古いレスポンスが残るのは?
s-maxage, surrogate制御, Vary不足, purge漏れが典型要因です。CDN層の設定とログを確認してください。
参考リンク
症状別ケーススタディ(このページ向け)
症状ベースで段階切り分けするためのページです。最初に「保存されない」か「更新されない」かを分けて確認します。
- 毎回200になる場合は no-store/no-cache の指定を先に確認する
- 更新反映が遅い場合は max-age と immutable を確認する
- CDNだけ古い場合は s-maxage と purge 運用を確認する
実装時チェックリスト(このページ向け)
- 障害切り分け時はブラウザキャッシュとCDNキャッシュを分けて検証する
- 再現手順に request headers と response headers を必ず残す
- キャッシュ無効化手段(URL versioning / purge)を事前定義する
- 修正後は 200→304 の遷移確認まで実施する
次に見る(診断順)
site_map ルールに基づいて、次に確認すべきページを表示しています。
- HTTP Cache Mismatch — キャッシュ不一致の原因候補を特定
- Cache Response Analyzer — レスポンスヘッダーからキャッシュ可否を判定
- Cache Diagnostic — キャッシュ関連ヘッダーを横断診断
- キャッシュ制御まとめ — Cache-Control/Pragma/Expires の使い分けを整理
- 更新したのに反映されない時の診断手順 — HTML/API/静的アセット別にキャッシュ方針を確認し、反映遅延を短時間で切り分ける
- Cache系ツールの使い分け — 「更新されない」「304が返らない」「CDNだけ違う」を症状別に最短で分岐
- Cache Key Inspect — URL/Vary/ヘッダーからキャッシュキー分岐を可視化
- Cache-Control Inspect — Cache-Control ディレクティブを分解・解釈
同テーマの導線
キャッシュ制御
Cache-Control/Expires/Age を横断して配信ポリシーを診断
- HTTP Cache Mismatch — キャッシュ不一致の原因候補を特定
- Cache Response Analyzer — レスポンスヘッダーからキャッシュ可否を判定
- Cache Key Inspect — URL/Vary/ヘッダーからキャッシュキー分岐を可視化
- Cache Diagnostic — キャッシュ関連ヘッダーを横断診断
- キャッシュ制御まとめ — Cache-Control/Pragma/Expires の使い分けを整理
- Cache-Control Inspect — Cache-Control ディレクティブを分解・解釈
- Pragma Cache Inspect — Pragma を解析して旧キャッシュ制御を確認
- Expires Inspect — Expires / Date を解析して期限挙動を確認
- Age Inspect — Age を解析して共有キャッシュ滞在時間を把握