2

出力キャッシュが期待どおりに機能していると思っていた MVC アプリに戻ってきました。ただし、再確認すると、使用している OutputCache 属性が効果がないことがわかります (Duration が高い値に設定されています)。追加するかどうかに関係なく、アクションのブレークポイントは常にヒットし、Firebug は要求されたページでそれぞれ 200 OK を表示します。

VaryByCustom を使用するより複雑なアクションでは、global.asax の GetVaryByCustomString メソッドは呼び出されません。私はそこでデバッグできたので、過去に呼び出されたことを知っていますが、今はそうではありません。

私はこれを壊すために何をしたのだろうか.何か考えはありますか?

(localhost をテストするだけでなく、有効な外部 URL になるように dyndns.org アドレスを使用します。IIS も使用します)。

更新: ローカルホストの URL を使用すると、同じ URL をターゲットにしてもアクション コードが再度入力されません。F5 を押すと実行されます。インターネット URL を使用すると、常にアクション コードにアクセスします。

更新 2 : Fiddler は、応答ヘッダーでこれを示しています。

200 OK

Cache:
Cache-Control: public, no-cache="Set-Cookie", max-age=86400
Date: Mon, 16 Jul 2012 19:38:46 GMT
Expires: Tue, 17 Jul 2012 19:38:46 GMT
Vary: *

同じ URL をリクエストするたびに Expires = Date + 24h になります。これは、毎回新しいページが提供されることを示しています。また、最初は 200 で、その後は 304 になるはずです。

4

1 に答える 1

1

私のアプリケーションに関連する犯人を発見しました:

アプリから 51degrees.mobi nuget パッケージを削除すると、再び機能します。(その機能を使用しなくても) 元に戻すと、キャッシュは機能しなくなります。実際には、次の 2 つのケースがあります。

  • パッケージを追加しただけでは、GetVaryByCustomString が呼び出されることはありません。アクション メソッドは、一度正しく呼び出された後、キャッシュから提供されます。
  • パッケージを追加し、CompressFilter 属性も使用する場合、GetVaryByCustomString は呼び出されず、アクション メソッドは常に呼び出されます (ページはキャッシュから提供されません)

この問題を報告するためにフォーラムに投稿しました。

更新: これらの問題は、51degrees バージョン 2.1.4.9 以降で発生します。これが関連する場合に備えて、これが Microsoft.Web.Infrastructure を使用した最初のバージョンであることに気付きました...

更新 2 : この問題の原因が判明し、修正される予定です。

于 2012-07-16T20:53:29.377 に答える