キャッシュを補助する HTTP Availability Hints の仕様

HTTP Availability Hints」という提案仕様がMark Nottinghamによって提出されています。

この提案仕様では、キャッシュで使用されるVaryを補助します。この情報により、キャッシュサーバは効率が向上します。

背景

例えば


  1. Client 1から英語(en)のコンテンツが要求され、CDNは英語コンテンツをキャッシュする
  2. Client 2から日本語(ja)のコンテンツが要求される

CDNがOriginからレスポンスを受け取った際に、"vary: Accept-Encoding" がついています。そのため、CDNはオリジンのコンテンツがaccept-languageに依存していると判断して、日本語(ja)の要求をOriginにプロキシします。

このとき、Originが日本語(ja)には対応しておらず結局英語(en)のコンテンツが返ってくることもあります。CDNは英語(en)のキャッシュが会ったため、無駄なやり取りをしてしまったことになります。

このケースにおいては、Originがjaのコンテンツを提供できないことをCDNが知っていれば、キャッシュしている英語(en)をClient2に返すことができます。

HTTP Availability Hints

HTTP Availability Hints」では、Varyで指定されたヘッダのうちオリジンが提供可能な種類を示せるようにします

Vary: Accept-Encoding, Accept-Language, ECT
Avail-Encoding: gzip, br
Avail-Language: fr, en;d
Avail-ECT: (slow-2g 2g 3g), (4g);d

Avail-Languageでは、フランス語(fr), 英語(en)が提供であることを示しています。デフォルトとして英語(en)が指定されているので、日本語のコンテンツが来たとしても英語のコンテンツを返していいことがわかります。

現在の提案仕様では、例として次の補足情報が定義されています。

Avail-Encoding
Vary: Accept-Encoding
Avail-Encoding: gzip, br
Avail-Format
Vary: Accept
Avail-Format: image/png, image/gif;d
Avail-Language
Vary: Accept-Language
Avail-Language: en-uk, en-us;d, fr, de

Cookieでは依存するクッキー名を指定できます

Vary: Cookie
Cookie-Indices: id, sid