秒数に単位を付けた誤りと綴りの誤り
秒数に「s」を付けたり、max-age を maxage と綴ったりした壊れた値の例です。どちらもキャッシュには正しく伝わらないため、エラーと情報で知らせます。
入力
Cache-Control ヘッダーの値
max-age=3600s, s-maxage=1.5, maxage=60
どちらのヘッダーか
レスポンス(サーバーから返るヘッダー)
結果
エラー 2 件・警告 0 件・情報 2 件
指摘(エラー・警告・情報)
- エラー 1 番目(max-age) max-age の値「3600s」は秒数(0 以上の整数)ではありません。単位や小数・負の数は書けません(RFC 9111 1.2.2)。
- エラー 2 番目(s-maxage) s-maxage の値「1.5」は秒数(0 以上の整数)ではありません。単位や小数・負の数は書けません(RFC 9111 1.2.2)。
- 情報 3 番目(maxage) 「maxage」は RFC 9111・8246・5861 にない指示です。理解しないキャッシュは無視します(RFC 9111 5.2.3)。綴りの誤りでないか確認してください。
- 情報 全体 正しい有効期間(max-age・s-maxage)がありません。Expires ヘッダーがなければ、キャッシュが独自の推定(ヒューリスティック)で期間を決めることがあります(RFC 9111 4.2.2)。
| ブラウザ(個人用キャッシュ) | 保存する。有効期間の指定なし(推定に任される) |
|---|---|
| CDN・プロキシ(共有キャッシュ) | 保存する。有効期間の指定なし(推定に任される) |
| 読み取った指示の数 | 3 個 |
指示ごとの意味
| 指示 | 値 | 意味 | 根拠 |
|---|---|---|---|
| max-age | 3600s | 値が正しい秒数でないため、この指示は期間として使えない(RFC 9111 5.2.1.1 / 5.2.2.1 の書式に合わせて直す) | RFC 9111 5.2.1.1 / 5.2.2.1 |
| s-maxage | 1.5 | 値が正しい秒数でないため、この指示は期間として使えない(RFC 9111 5.2.2.10 の書式に合わせて直す) | RFC 9111 5.2.2.10 |
| maxage | 60 | (このツールが知らない指示。キャッシュは無視する) | RFC 9111 5.2.3 |
検算(この結果になる理由)
delta-seconds は 0 以上の整数だけ(RFC 9111 1.2.2 節)なので、3600s と 1.5 はエラーが 2 件です。maxage は仕様にない指示のため、キャッシュは無視する(5.2.3 節)という情報になります。有効な期間がないため要約は「有効期間の指定なし」です。
判定の根拠は仕様と根拠に、仕様の出典とともにまとめています。自分の入力で試すにはツールをお使いください。
このツールの制約
- Expires・Pragma・Vary・Age など Cache-Control 以外のヘッダーとの組み合わせは判定しません(貼り付けても読み飛ばします)。
- CDN やブラウザ製品ごとの独自の挙動・独自の指示(製品固有の拡張)は判定せず、仕様にない指示として扱います。
- 実際にサーバーへ接続してヘッダーを取得する機能はありません。貼り付けた文字だけを読みます。
- 応答のステータスコードや認証の有無によって保存の可否が変わる規則(RFC 9111 3 節)までは考慮しません。
ご利用にあたって
- 結果は仕様(RFC)にもとづく読み解きで、特定の CDN・ブラウザでの実際の動作を保証するものではありません。
- 本番の設定を変えるときは、検証環境で実際の応答ヘッダーとキャッシュの挙動を確認してください。