メインコンテンツまでスキップ

1. はじめに

現代のHTTPデプロイメントでは、複数層のキャッシングが頻繁に使用されます。たとえば、Webサイトはオリジンサーバー自体にキャッシュを使用する場合があります。オリジンサーバーと同じネットワークにキャッシング層をデプロイする場合があります。インターネット全体に分散された1つ以上のCDNを使用する場合があります。また、ブラウザキャッシングからも恩恵を受ける場合があります。

これらの異なるクラスのキャッシュを個別に制御することが望ましい場合が多いため、それらを対象とするキャッシュディレクティブの何らかの手段が必要です。たとえば、パブリッシャーが関係のあるキャッシュ(CDNキャッシュなど)のコンテンツを無効化するメカニズムを持っている場合、他のキャッシュの動作を制限したいと思いながらも、そのキャッシュにはより寛大なキャッシングポリシーを割り当てることに、より安心できる可能性があります。

HTTP Cache-Controlレスポンスヘッダーフィールド([HTTP-CACHING]のセクション5.2で定義)は、キャッシング動作を指示するために広く使用されています。ただし、比較的差別化されていません。一部のキャッシュディレクティブ(例:s-maxage)は特定のクラスのキャッシュ(s-maxageの場合、共有キャッシュ)を対象としていますが、すべての既存のキャッシュディレクティブ(例:stale-while-revalidate)で一貫してターゲティングが利用できるわけではありません。これは、キャッシング拡張の数が潜在的なターゲットの数とともに増加するにつれて、特に問題となります。

一部の実装は、この問題を克服するためにアドホックな制御メカニズムを定義していますが、相互運用性は低いです。セクション2では、HTTPレスポンスヘッダーを使用したターゲット型キャッシュ制御の標準フレームワークを定義し、セクション3では、CDN-Cache-Controlレスポンスヘッダーフィールドという1つのヘッダーを定義します。

1.1. 表記規則

この文書のキーワード「MUST」、「MUST NOT」、「REQUIRED」、「SHALL」、「SHALL NOT」、「SHOULD」、「SHOULD NOT」、「RECOMMENDED」、「NOT RECOMMENDED」、「MAY」、および「OPTIONAL」は、BCP 14 [RFC2119] [RFC8174]に記載されているように解釈されるものとし、ここに示すようにすべて大文字で表示される場合に限ります。