11

私の知る限り、HTTPヘッダーVaryは、リクエストがキャッシュヒットかミスかを判断するときに、URLと一緒にキャッシュで考慮する必要があるHTTPヘッダーのコンマ区切りリストを指定します。

そのヘッダーが省略されている場合は、URLのみが考慮されることを意味します。

しかし、ヘッダーがである場合はどうなりVary:*ますか?

RFC 2616 14.4

***のVaryフィールド値は、要求ヘッダーに限定されない未指定のパラメーター(たとえば、クライアントのネットワークアドレス)が応答表現の選択に役割を果たすことを示します。*値はプロキシサーバーによって生成されてはなりません。オリジンサーバーによってのみ生成できます。

RFC 2616 13.6

*のVaryヘッダーフィールド値は常に一致せず、そのリソースに対する後続のリクエストは、オリジンサーバーによってのみ適切に解釈されます。

これは、このヘッダーを持つすべてのリクエストがキャッシュミスになることを意味しますか?

ASP.NETがHTTPヘッダーを使用すると、そのHTTPヘッダーが返されることがわかりました。ヘッダーがOutputCacheAttribute不要な場合、またはカスタムヘッダーを指定する場合は、その動作を明示的に無効にする必要があるため、(したい)信じています。ありそうもない。

の実用的な意味はどれVary:*ですか?

ありがとう。

4

1 に答える 1

7

Vary:*は、HTTPコンテンツネゴシエーションの通常の側面(Accept、Accept-Language、Accept-Charsetなど)を超える側面に基づいて応答が選択されたことをキャッシュに通知します。

事実上、これはキャッシュに応答をキャッシュしないように指示します。これは、「そのリソースに対する後続のリクエストは、オリジンサーバーによってのみ適切に解釈できる」という意味です。キャッシュはこれらのリクエストをオリジンサーバーに転送する必要があります。

編集:Varyはキャッシングと直交しています。このことを考慮:

GET / foo HTTP / 1.1

200 Ok Cache-Control:maxage = 60 Content-Location:/foo.html Vary:*

Vary:*は、/fooへのリクエストに対して応答をキャッシュできないことをキャッシュに通知します。ただし、Content-Locationヘッダーがあるため、キャッシュは/foo.htmlへのリクエストに対する応答を保存できます。

于 2011-10-01T15:53:26.890 に答える