Vary: * を持つ保存済みレスポンスは、通常の Vary 照合テストで常に失敗します。プロキシは、URL と見えているヘッダーが似ているというだけでは、後続のリクエストが同じ表現を受け取る権利があると結論できません。

これを次と比べてください。

Vary: Accept-Encoding

これはキャッシュが比較できるリクエストフィールドを名指ししています。ワイルドカードは、この種のヘッダー比較では不十分だと述べています。鮮度やキャッシュサイズを増やしても、欠けている選択情報は得られません。

違いは保存と再利用の間にあります。キャッシュは検証に役立つ情報を保持できますが、保存されたワイルドカードの変種は、次のリクエストを満たせる通常の一致レスポンスにはなりません。通常、プロキシは代わりにオリジンへ問い合わせる必要があります。

レスポンスポリシーにアプリケーションを記述させる

オリジンを管理していて、表現が本当に識別可能なリクエストヘッダーだけで変わるなら、そのフィールドを正確に指定してください。その例がキャッシュ可能だからという理由だけで、ワイルドカードを Accept-Encoding に置き換えないでください。アプリケーションは言語、認可、あるいはそれらのヘッダー外の情報によっても変わる可能性があります。

コンテンツが非公開である、または保存すべきでない場合は、対応するキャッシュポリシーでそれを表現してください。Vary を削除しても、個人向けコンテンツが共有しても安全になるわけではありません。

Squid の vary_ignore_expire は、変動するレスポンスの有効期限処理と歴史的な HTTP の挙動に関するものです。ワイルドカードを一致させるスイッチではありません。

関連記事