5

次のアクションメソッドがあります。

[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設定の多くのバリエーションを試しましたが、役に立ちませんでした:(

4

2 に答える 2

3

ASP.NET が嫌いなのと同じくらい IIS も嫌いです。

http://blogs.msdn.com/b/chaun/archive/2009/10/01/iis-compression-overwrites-the-vary-header-average-rating-0-ratings.aspx

于 2012-06-22T12:50:20.220 に答える
0

そのため、応答は、Andrew Bullock の URL「ページ ファイル名」、つまり「iis 圧縮が Vary ヘッダーを上書きする」によってリンクされたものに含まれています。

しかし、2013 年 12 月以降、修正プログラムが利用可能になりました (Andrew Bullock のリンクにあります)。いつものように、この修正プログラムは通常のパッチに含まれている可能性があるため、適用する前に必要であることを確認してください。

また、(ページがダウンした場合に備えて) リンクを提供するだけでなく、リンクから情報を明示的に提供することが「ベスト プラクティス」であるため、ここに要約を示します。

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

私の特定のケースでは、別の問題もありました.asp.netは、に設定されたVaryヘッダー(圧縮が有効かどうか)を出力していませんでした。この追加の問題を「解決済み」に設定します。しかしもちろん、これにはからへ の変更という副作用があります。(クライアント ブラウザだけでなく、プロキシでキャッシュできるようになりました。)outputCache locationClientDownstreamCache-Controlprivatepublic

于 2014-09-15T15:47:45.140 に答える