2017-12-22 2 views
0

私はASP.NET Webformsアプリケーションを持っています。パフォーマンスを向上させるために私はプログラムでマスターページのページの読み込みにOutputcacheを設定します。Outputcacheの期限切れが早すぎるのはなぜですか?

protected void Page_Load(object sender, EventArgs e) 
    { 
     // [...] do stuff [...] 

     if (!Page.IsPostBack) 
     { 
      Response.Cache.SetCacheability(HttpCacheability.Server); 
      Response.Cache.SetValidUntilExpires(true); // ignore Cache-Control Header from Request 
      Response.Cache.SetSlidingExpiration(false); 
      Response.Cache.VaryByParams["*"] = true; 
      Response.Cache.SetExpires(somedateinthefuture); // plus 5 Days from now 
      Response.AddFileDependency(pathtoafile);  // a file which will be overwritten when cache should be fully cleared (this works) 
     } 
} 

ので、HTMLがキャッシュされているすべての一意のURLのために。これはかなりうまくいく。

問題:

  • 多数のエントリは、それが
  • いくつかのエントリが24時間以上の滞在何日も続くはずですが、また期間
  • する前に削除されますが、キャッシュからの1または3分後にランダムに削除されます

    • 依存-ファイルがUPDATされていない。私がチェック何

    ED

  • IIS-アプリケーションまたはアプリケーションプールは
  • シングルアイテムが行うプロダクション・サイトで、その後ずっと長くとどまる再起動またはプールのメモリがテスト・サイトOutputcacheで最大
  • ではない
  • リサイクルされていません"STRG + F5" を押すと、全体のキャッシュ
  • はというサイト
  • が除去Oが発生する可能性がありますどのようなASP.NET 4.6.1

、IIS 7.5を再ロードし、有効期限が切れていませんf単一キャッシュ項目。たぶんボットですか?しかし、SetValidUntilExpires(true)によってこれを防ぐべきではありませんか?

答えて

1

理由は、IIS7アプリケーションの設定です。アプリケーションプールは、400 MBを超えるサイズに達すると、それ自体をリサイクルしたり、単一のキャッシュエントリを削除したりしました。

関連する問題