出力キャッシュが正常に動作していないようです これは私のウェブサイトのデフォルトページを返すコントローラメソッドです。 私は40secsのためにそれをキャッシュしている - 私は最初のエンドポイントを打つとき、私は2つの問題OutputCacheが正しく動作しません - > ASP.NET MVC5
まず
を持って
[OutputCache(Duration = 40, Location = OutputCacheLocation.ServerAndClient, VaryByParam = "none")]
public async Task<ActionResult> Index(){
......
}
(テスト>ライブでそれがはるかに長いためにキャッシュされています)サーバー上で正しくキャッシュされ、(期待どおり)次の応答ヘッダーが返されます。
status:200
Cache-Control:"private, max-age=40, s-maxage=0"
新しいブラウザタブを開いて、5秒後に同じエンドポイントに貼り付けるとき。サーバーに移動し、内容と次のヘッダーを含む200を返します
status:200
Cache-Control:"private, max-age=63622944145, s-maxage=63622944105"
これは私にとっては正しいとは限りません。私はIf-modified-sinceヘッダーを使ってサーバーに要求を送信することを期待していました。キャッシュされた応答がヘッダーの時間以降に再構築された場合、それは200 +コンテンツelse 304を返します。この場合、サーバーキャッシュは再構築されないため、304を返す必要があります。また、それは現在無効であるため、ただちに無効とみなされます。 私は何を間違っているのですか?
第二
私は私のIndexメソッドにブレークポイントを入れて、私のブラウザーからエンドポイントをヒット。インデックスエンドポイントに初めて当たったとき、ブレークポイントがヒットしました。その後のエンドポイントへの要求は、期待どおりに次の40秒間ブレークポイントにヒットしません。しかし、ブラウザのエンドポイントの最後に "/"を追加すると、キャッシュを無視してブレークポイントに到達します。 どうすればこの問題を回避できますか?
あなたの質問、URL 'http://www.example.com' と 'http://www.example.com/' の第2の半分について/は、別のページです。両方を同じように扱うには、Web.ConfigにURL書き換えモジュールが必要です。私は下の私の答えを変更します。 – kodikas