仕様と根拠
読み方
値をカンマで指示に分け(引用符の中のカンマは区切らない)、指示名は大文字・小文字を区別せずに RFC 9111 の 5.2 節と、拡張として RFC 8246(immutable)・RFC 5861(stale-while-revalidate・stale-if-error)に照らして意味を表にします。秒数をとる指示は 0 以上の整数だけを正しい値とし、2147483648 を超える値はその値として扱います(RFC 9111 1.2.2 節)。
エラー・警告にする条件
秒数が整数でない・必要な秒数がない・指示名に使えない文字がある・引用符が閉じていない場合はエラーです。同じ指示の重複(4.2.1 節)、秒数を引用符で囲む書き方、値をとらない指示への値、no-store とほかの保存指示の同居、public と private の同居、private と s-maxage の同居、有効期間のない immutable は警告にします。
要約の見方
レスポンスのときは、ブラウザ(個人用キャッシュ)と CDN・プロキシ(共有キャッシュ)のそれぞれについて、保存するか・確認なしで使える期間を一文にまとめます。共有キャッシュの期間は s-maxage を max-age より優先します(RFC 9111 5.2.2.10)。
根拠にした仕様・資料
| 仕様・資料 | 確認日 | 使った箇所 |
|---|---|---|
| RFC 9111 HTTP Caching | 2026年10月28日 | 5.2 節(指示の一覧と書式)・4.2.1 節(重複・矛盾)・1.2.2 節(delta-seconds)・5.2.3 節(未知の指示) |
| RFC 8246 HTTP Immutable Responses | 2026年10月28日 | 2 節(immutable は引数をとらない) |
| RFC 5861 HTTP Cache-Control Extensions for Stale Content | 2026年10月28日 | 3 節(stale-while-revalidate)・4 節(stale-if-error) |
指摘の段階
- エラー: 仕様に反していて、正しく読めない・処理できない入力です。
- 警告: 読めるものの、仕様の推奨に反する・矛盾する・意図と違う結果になりやすい入力です。
- 情報: 誤りではありませんが、知っておくとよい扱い(読み飛ばした部分や解釈)です。
入力の扱い(送信しない仕組み)
処理はすべてお使いのブラウザの中で行います。処理の本体はこのサイトから配信する小さなスクリプト(/app.js)で、外部のサービスやライブラリを読み込みません。ページはブラウザに通信を禁止させる設定(Content-Security-Policy の connect-src)つきで配信しており、入力した内容がサーバーや第三者へ送られることはありません。ファイルを選んだ場合も、端末の中で読み込むだけです。
このツールでできないこと(制約)
- Expires・Pragma・Vary・Age など Cache-Control 以外のヘッダーとの組み合わせは判定しません(貼り付けても読み飛ばします)。
- CDN やブラウザ製品ごとの独自の挙動・独自の指示(製品固有の拡張)は判定せず、仕様にない指示として扱います。
- 実際にサーバーへ接続してヘッダーを取得する機能はありません。貼り付けた文字だけを読みます。
- 応答のステータスコードや認証の有無によって保存の可否が変わる規則(RFC 9111 3 節)までは考慮しません。
ご利用にあたって
- 結果は仕様(RFC)にもとづく読み解きで、特定の CDN・ブラウザでの実際の動作を保証するものではありません。
- 本番の設定を変えるときは、検証環境で実際の応答ヘッダーとキャッシュの挙動を確認してください。