CDNのキャッシュを制御する「CDN-Cache-Control」を新しく定義する提案仕様「The CDN-Cache-Control HTTP Response Header Field」が出ているので、簡単に紹介する。
2021/10/16 追記: 最新仕様では「Targeted HTTP Response Header Fields for Cache Control」と呼ばれる
はじめに
HTTPではキャッシュを制御するのにCache-Controlヘッダを使用しますが、クライアントとは別にCDNに対して個別にキャッシュの制御を行いたい場合もあります。
その用途のために使用する「CDN-Cache-Control」を新しく定義しようというのが「The CDN-Cache-Control HTTP Response Header Field」です。
この仕様は、Akamai, Fastly, Cludflareに所属する三人が共著で提出している点も興味深いところです。
CDN-Cache-Control
CDN-Cache-ControlヘッダのディレクティブはCache-Controlヘッダと同様です。
CDN-Cache-Controlがある場合は、Cache-control及びExpiresヘッダは無視されます。(CDN-Cache-Controlがなければ、Cache-controlが使用されます。)
例えば下記のようなレスポンスヘッダは
Cache-Control: max-age=60, s-maxage=120 CDN-Cache-Control: max-age=600
例えばCDNではキャッシュを許可し、それ以外では保存させないという事もできます。
Cache-Control: no-store CDN-Cache-Control: max-age=600
その他
提案仕様では、いくつかのFAQが書かれています。詳しくは原文を見てもらうとして、軽く紹介
なぜSurrogate-Controlを使わないのですか?
Surrogate-Controlヘッダーの実装はいくつかあるが、一貫性がないため、相互運用性の観点で新しいヘッダとして定義した
なぜCache-Controlヘッダに組み込まないのですか?
冗長性が減るが、相互運用上の観点で複雑性がますため