ちなみに、「Varyヘッダ」とは何者か説明すると、これはHTTP 1.1のcontent negotiationのために追加されたもので、「送出コンテンツを決定するのに判断したヘッダが何か」を付与するものだ。
たとえば、Accept-Languageに含まれる言語に応じて日本語ページと英語ページを振り分けているページなんかで、そのままキャッシュしてしまうと「日本語を受け付けるハズなのに英語が」なんて事態になっちゃうことがあった。
で、これを解決するために、
Vary: Accept-Language
などとすると、キャッシュ側は「あぁ、Accept-Encodingによってコンテンツが変わるんだな」と判断できる。で、同じURIに対して複数のキャッシュを持つことができるようになるのだ。
Webクライアント/Webサーバの実装はそんなにむつかしくなさそうなんだけど、キャッシュに実装するとなるとエラく大変そうなこの機能。試した人はぜひレポートをお願いします。
ちなみに、ここはmod_gzipを使うようになって、Accept-Encodingによってコンテンツが分かれるようになったのだけど、Varyヘッダはついていない。ただLast-Modifiedがついておらず、キャッシュされないのでSquidやブラウザが混乱することは無い、ハズ。
|