2012-06-22 10 views
5

を設定されていない私は、次のアクションメソッドがあります。MVC3 OutputCache VaryByHeader =クッキー

[HttpGet, Authorize, OutputCache(Duration = 60, VaryByHeader = "Cookie", Location = OutputCacheLocation.Any)] 
public ActionResult Index() 

をしかし、私は要求を行う際に、これらが発行され、ヘッダーです:

Cache-Control: private, max-age=60, s-maxage=0 
Content-Type: text/html; charset=utf-8 
Content-Encoding: gzip 
Expires: Fri, 22 Jun 2012 09:56:32 GMT 
Last-Modified: Fri, 22 Jun 2012 09:55:32 GMT 
Vary: Accept-Encoding 

なぜそれではありませんVaryのCookieヘッダを含む?

私はOutputCache設定の多くのバリエーションを試みたが、無駄にしました:(

答えて

0

だから、応答があります

しかし、2013年12月以降には、修正プログラムが利用可能です(Andrew Bullockのリンクにあります)。通常、このhotfiは、Andrew BullockのURL「ページファイル名」によってリンクされています。 xは通常のパッチに含まれている可能性がありますので、それを適用する前にまだ必要であることを確認してください。

そして、それが明示的にリンクだけではなく(ページがダウンした場合)のリンクを供給からの情報を提供する「ベストプラクティス」であるとして、ここでは抽象的である:

は、動的圧縮がVaryヘッダを上書きIIS。これはバージョン5からバージョン8に含まれているIISに適用されるようです(msdnのブログとmsdn kbから情報を累積する場合)。 IISの動的圧縮を無効にするか、必要に応じてhttp://support.microsoft.com/kb/2877816/en-usにある修正プログラムを適用してみてください。 (この問題は、Windows 8.1/2012 R2シリーズの正規のパッチで修正される可能性があります。この修正プログラムは、IIS7から利用可能で、私のサーバー上ではまだwin7 sp1でテストされていません)。

私の特定のケースでは、また別の問題:asp.netはoutputCachelocationClientに設定して、Varyヘッダー(圧縮が有効かどうか)を表示していませんでした。 Downstreamに設定すると、この問題が「解決」されます。もちろん、からpublicに変更するという副作用があります。 (クライアントブラウザの代わりにプロキシでキャッシュ可能になりました)

関連する問題