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層の設定とログを確認してください。

参考リンク

  1. RFC 9111
  2. RFC 9110
  3. MDN: HTTP Caching

症状別ケーススタディ(このページ向け)

症状ベースで段階切り分けするためのページです。最初に「保存されない」か「更新されない」かを分けて確認します。

  • 毎回200になる場合は no-store/no-cache の指定を先に確認する
  • 更新反映が遅い場合は max-age と immutable を確認する
  • CDNだけ古い場合は s-maxage と purge 運用を確認する

実装時チェックリスト(このページ向け)

  • 障害切り分け時はブラウザキャッシュとCDNキャッシュを分けて検証する
  • 再現手順に request headers と response headers を必ず残す
  • キャッシュ無効化手段(URL versioning / purge)を事前定義する
  • 修正後は 200→304 の遷移確認まで実施する

site_map ルールに基づいて、次に確認すべきページを表示しています。

  1. HTTP Cache Mismatch — キャッシュ不一致の原因候補を特定
  2. Cache Response Analyzer — レスポンスヘッダーからキャッシュ可否を判定
  3. Cache Diagnostic — キャッシュ関連ヘッダーを横断診断
  4. キャッシュ制御まとめ — Cache-Control/Pragma/Expires の使い分けを整理
  5. 更新したのに反映されない時の診断手順 — HTML/API/静的アセット別にキャッシュ方針を確認し、反映遅延を短時間で切り分ける
  6. Cache系ツールの使い分け — 「更新されない」「304が返らない」「CDNだけ違う」を症状別に最短で分岐
  7. Cache Key Inspect — URL/Vary/ヘッダーからキャッシュキー分岐を可視化
  8. Cache-Control Inspect — Cache-Control ディレクティブを分解・解釈

キャッシュ制御

Cache-Control/Expires/Age を横断して配信ポリシーを診断