9

ASP.NETリソースのキャッシュ可能性を設定しようとしています。したがって、/ foo / showに移動すると、リソースのビューが表示され、これを数時間キャッシュします(たとえば)。これを行うために、アクションメソッドを装飾するOutputCache属性を使用しています。このキャッシュの詳細(このアクションメソッドに対する)は、web.configファイルにあります。

この出力キャッシュを設定すると、は正しく設定されていますmaxage valueが、s-maxage値は0です。これはなぜですか。

コードは次のとおりです。

[Authorize]
[OutputCache(CacheProfile = "SomeController_Show")]
public ActionResult Show(){ ... }

そして、これが設定ファイルのスニペットです:

<add name="SomeController_Show" duration="3600" varyByParam="authkey;format;blah"  />

および応答のスニペット:

Cache-Control:public, max-age=3576, **s-maxage=0**
Content-Length:746
Content-Type:application/json; charset=utf-8
Date:Tue, 10 Aug 2010 00:42:17 GMT
Expires:Tue, 10 Aug 2010 01:41:53 GMT
Last-Modified:Tue, 10 Aug 2010 00:41:53 GMT
Server:Microsoft-IIS/7.0
Vary:*

maxageが正しく設定されているのに、s-maxageが正しく設定されていないことに注意してください。

4

1 に答える 1

13

私は答えを見つけました、[AuthorizeAttribute]すべての最大値をゼロにクリアします。つまり、 Authorizationを持つビュー結果をすべてのキャッシュにプロキシする必要はありません。

プロキシはURLを介してコンテンツをキャッシュしていると思います..したがって、URLに認証の詳細が含まれていない場合(実際にはそうではありません... :))..では、2つの異なるリクエストが同じ人かどうか?

(他の開発者がこの問題を解決できるように、削除する代わりにこの回答を追加しました)。

また、同様の質問:ASP.NET MVCコードのこのブロックについて誰かに説明してもらえますか?

于 2010-08-10T03:06:50.093 に答える