Age Inspect
キャッシュ関連ヘッダーを横断して判定します。入力はサーバーへ送信しません。再検証やCDN差分の一次切り分けに使えます。
状態
ブラウザ内で処理します。入力はサーバーへ送信しません。まずはここで一次切り分けしてください。
使い方
Age(必要ならDateも)を貼り付けて「解析」。秒数と、解釈の目安を表示します(ヘッダー行/複数行貼り付けOK、レスポンスヘッダー全体でもOK)。
注意(このツール)
- Age は共有キャッシュのヒントです。実際のキャッシュ可否/期限は Cache-Control(max-age/s-maxage等)とセットで確認してください。
このページについて
何をするツール?
Age ヘッダーを解析して、共有キャッシュ(CDN/プロキシ)に溜まったレスポンスが「どれくらい経過しているか」を秒で表示します。
キャッシュが効いているのか、どの程度「古いものを見ているのか」を素早く判断したい時に役立ちます。
Age の基本
- Age は「共有キャッシュに保持されてからの経過秒」を表す指標です。
- 主に CDN / 共有プロキシで付与されることが多いです。
- Age が 0 なら「今取りたて」ではなく「たまたま0秒」もあり得ます(推定の範囲)。
Cache-Control と一緒に見る理由
Age は「どれくらい古いか」の目安で、許容される古さは Cache-Control(max-age/s-maxage など)の設計で決まります。
- Age が増え続けるのに更新されない:s-maxage/max-age/immutable を疑う
- Age が常に 0:キャッシュされていない/バイパスされている/毎回再検証されている可能性
Ageをどう読む?(freshnessとの関係)
Age は「保持されてからの経過秒」で、fresh/stale の判定は Cache-Control(max-age / s-maxage など)や Expires で決まります。Age が大きい=必ず stale ではなく、「許容期間を超えているか」で判断します。
- s-maxage=600(共有キャッシュ10分)で Age=120 → まだ fresh の可能性
- s-maxage=600 で Age=1200 → stale(再検証/更新/再フェッチ)される可能性が高い
- max-age が短いのに Age が大きい → その中間が「更新している」かは 304/ETag/Last-Modified も要確認
HIT/MISSとAge(違いを整理)
CDNには X-Cache / CF-Cache-Status のような「HIT/MISS」を示す独自ヘッダーがあることがあります。一方 Age は標準的なヒントで、HIT/MISS と同じ意味ではありません(ただし合わせて見ると推測が強くなります)。
- Age が増える + HIT が出る → 共有キャッシュに乗っている可能性が高い
- Age が 0 + MISS が続く → バイパス/未キャッシュ/割れ(Vary)を疑う
- Age が 0 でも HIT の場合があり得る(ちょうど0秒のタイミング、再検証直後など)
構文(読み方)
Age は整数の秒数です。多くの場合、レスポンスヘッダーの Age: 123 のように表示されます。
- Age: 0
- Age: 42
- Age: 86400
用語(このページの前提)
- Shared cache: CDN/プロキシのような共有キャッシュ。
- Freshness lifetime: キャッシュが fresh として扱われる期間(max-age/s-maxage/Expires等)。
- Revalidation(再検証): stale なキャッシュを使う前に確認する動作(ETag/Last-Modified)。
例(どう解釈する?)
- Age: 5 → 直近にキャッシュされた可能性が高い(ヒットしているかも)
- Age: 3600 → 1時間程度同じエントリが生きている(s-maxageが大きいかも)
- Age: 0 が連続 → 共有キャッシュが効いていない/バイパス/毎回再検証/分岐が割れている(Vary)などを疑う
よくある落とし穴
- Age は “完全な真実” ではなく目安(実装や再検証で揺れる)
- ブラウザキャッシュには Age が見えないことがある(CDN/共有キャッシュで主に有効)
- CDNが Age を非表示/上書きする場合がある
CDN/プロキシ配下で起きがちなこと
Age は中間キャッシュが付ける値なので、経路(どのPOP/どのレイヤーを通ったか)で見え方が変わります。オリジン直アクセスと比較したい場合は、CDNをバイパスする経路を用意して差分を見るのが確実です。
- 同じURLでもPOPが違うと Age がリセットされることがある
- 再検証(304)でも Age が増える/戻るなど挙動が揺れることがある
- 変換(圧縮/最適化)やキャッシュキーの設定で別エントリ扱いになることがある(Vary)
stale-while-revalidate等とAge
Cache-Control の stale-while-revalidate / stale-if-error などを使うと、期限切れでも「しばらく古いレスポンスを返して裏で更新する」挙動になります。その場合、Age が大きくても意図通りの可能性があります。
「古いのに返ってくる」が問題かどうかは、設計(許容する古さ)と目的(最新性が必要か)で判断します。
切り分け手順(おすすめ)
- Response Headers Parser にレスポンスヘッダー全体を貼って Age/Cache-Control/Date を確認
- このツールで Age(必要ならDateも)を整理し、増加/固定/リセットの傾向を見る
- Vary Inspect でキャッシュ割れ(分岐過多)がないか確認
トラブル別チェックリスト
- キャッシュが効かない: Ageが常に0、Cache-Controlがprivate/no-store/no-cache、Vary: * などを確認
- 更新が反映されない: Ageが大きい、s-maxage/max-ageが大きい、immutable、パージ/バイパスの運用を確認
- CORSが不安定: Originが動的なら Vary: Origin を確認(キャッシュ混在対策)
確認のしかた(curl)
同じURLを何度か叩き、Age の変化を見るとキャッシュ状況を推測しやすいです(URLは置き換えてください)。
- curl -I https://example.com/asset.js
- Age/Cache-Control/Date を確認し、このツールに貼り付けて整理
関連ツール
- Cache-Control Inspect
- Expires Inspect
- ETag Inspect / Last-Modified Inspect
- Vary Inspect
- Response Headers Parser
推奨(実務)
- Age は CDN/プロキシの情報。Cache-Control と合わせて判断
- 共有キャッシュの可否は public/private を確認
- Age の伸びが不自然なら中間キャッシュ階層を疑う
このツールでできること
- Age の値を抽出して秒数として表示
- Age が数値かどうかの検証
- レスポンスヘッダー全体から Age/Date を抽出
- Age と Date から「保存された時刻(推定)」を計算して表示
注意(運用)
- キャッシュ挙動はブラウザ/CDN/プロキシの層で変わるため、同一点観測で比較してください。
- ヘッダー診断だけでは不十分な場合があります。アプリ側の更新戦略とキー設計も確認してください。
参照仕様
- RFC 9110(HTTP Semantics)
- RFC 9111(HTTP Caching)
- MDN: Age
FAQ
Age が無いのはおかしい?
必須ではありません。共有キャッシュを挟んでいない/表示しない設定の可能性があります。Cache-Control や他のキャッシュ指標も合わせて確認してください。
Age: 0 はキャッシュヒット?
必ずしもそうではありません。直後にキャッシュされた/再検証された/たまたま0秒だった等があり得ます。連続で観測するのが確実です。
Age が max-age / s-maxage を超えているのに返ってくるのはなぜ?
stale-while-revalidate などの許容、再検証(304)挙動、実装差、あるいは「別レイヤーのキャッシュ」を見ている可能性があります。Cache-Control 全体と ETag/Last-Modified の有無も合わせて確認してください。
参考リンク
次に見る(診断順)
site_map ルールに基づいて、次に確認すべきページを表示しています。
- If-Modified-Since Inspect — If-Modified-Since を解析して条件付き取得を確認
- Expires Inspect — Expires / Date を解析して期限挙動を確認
- If-None-Match Inspect — If-None-Match を解析して再検証条件を確認
- Last-Modified Inspect — Last-Modified / If-Modified-Since を解析
- Cache Not Working Troubleshooting — キャッシュが効かない症状をヘッダーから段階的に切り分け
- HTTP Cache Mismatch — キャッシュ不一致の原因候補を特定
- Cache Response Analyzer — レスポンスヘッダーからキャッシュ可否を判定
- Cache Key Inspect — URL/Vary/ヘッダーからキャッシュキー分岐を可視化
同テーマの導線
キャッシュ制御
Cache-Control/Expires/Age を横断して配信ポリシーを診断
- Cache Not Working Troubleshooting — キャッシュが効かない症状をヘッダーから段階的に切り分け
- 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 を解析して期限挙動を確認