要約

  • Cache-Groups は、不透明で大文字と小文字を区別するグループ文字列を一つ以上宣言できます。
  • グループ所属は、同じキャッシュかつ同じ URI オリジンの内部だけで成立します。
  • 安全なリクエストへのレスポンスにある Cache-Group-Invalidation は無視しなければなりません。安全でないリクエストでは、指定グループを共有する保存済みレスポンスを無効化できます。
  • 無効化は、別の拡張が強化しない限り任意であり、新たに関連付けられたグループへ連鎖しません。

RFC 9875の中心は、保存済みレスポンスの関係をキャッシュ内で表すことです。レスポンスは複数のグループを宣言でき、キャッシュはその情報を同じオリジン内の関連性として扱えます。識別子は不透明であり、大文字と小文字も区別されます。したがって、文字列そのものが所有者や権限を示すわけではありません。運用側には、名前空間を誰が管理し、どのレスポンスが所属を宣言でき、誰が無効化を要求できるかを決める責任があります。

境界を誤ると説明が崩れます。あるキャッシュのグループ情報は別のキャッシュへ自動的に伝わらず、ブラウザー、プロキシ、リバースプロキシなどが同じ状態を持つことも保証されません。この仕組みは異なる URI オリジンのレスポンスを関連付けません。従って、RFC 9875をクロスキャッシュ、クロスCDN、クロスオリジンの同期機構として扱うことはできません。ローカルキャッシュで無効化が起きても、別のキャッシュの状態は別に評価する必要があります。

フィールド処理には、必須の規則と任意の動作があります。安全なリクエストへのレスポンスに Cache-Group-Invalidation があれば、必ず無視します。これは設定次第の最適化ではありません。安全でないリクエストでは、名前付きグループを共有する保存済みレスポンスを無効化してもよいのですが、別のキャッシュ拡張による強化がない限り、その無効化自体は必須ではありません。また、無効化されたレスポンスを起点に、後から関係したグループを再帰的に追跡することもありません。

脅威は二方向です。状態変更後も関連レスポンスが残れば、古い表現が提供される可能性があります。反対に、広すぎるグループや不十分な権限制御は、別のテナントの資源を巻き込みます。同一オリジンで複数者をホスティングする場合、一方が他方の資源と同じグループに入れたり、無効化したりできないよう、ホストがアクセスを管理しなければなりません。不透明な名前は、権限分離の代わりにはなりません。

意思決定の焦点は「一つのヘッダーでサイト全体を消せるか」ではありません。どのキャッシュとオリジンで、どの主体が、どの範囲を操作できるかを限定することです。複数キャッシュ間の整合性が必要なら、別の仕組みと別の根拠を用意し、この信号の範囲を拡張してはなりません。

出典