10

ロード バランサーの背後にある複数の Web サーバーで ASP.NET アプリケーションを実行しているとします。

できること:

  • OutputCache (ページおよび/またはコントロール レベル) を強制的にグローバルに期限切れにしますか?

  • データ キャッシュ (つまり、Cache.Insert) を強制的に期限切れにしますか?

  • 中央の場所から ASP.NET キャッシュの使用 (キー、RAM など) を監視しますか?

考えられる解決策の 1 つは、キャッシュを使用するたびにファイルの依存関係の変更をチェックすることです。ファイルに触れると、すべてのキャッシュが期限切れになる可能性があります。ただし、これには、開発者がすべてのコードに依存関係を含める必要があります。彼らはより良い解決策ですか?

4

3 に答える 3

9

これらのキャッシュを期限切れにする方法はたくさんあります。

Page.Response.Cache.SetCacheability(HttpCacheability.NoCache)

時間ベースの依存関係は、定義された時点でアイテムを期限切れにするだけです。

Response.Cache.SetExpires(DateTime.Now.AddSeconds(360));
Response.Cache.SetCacheability(HttpCacheability.Private)
Response.Cache.SetSlidingExpiration(true);

キャッシュの監視に関しては、キャッシュに通知する API がない限り、直接的な方法はありません。

もちろん、キャッシュとキーと値のペアを列挙し、格納されている各アイテムのサイズを計算することもできます。簡単に聞こえませんか??

ここは、キャッシュの監視を簡単にします。率直に言って、私はそれを自分で使用したことはありませんが、アプリケーションに dll を追加するだけで、試してみることができます。

そして、これはあなたのキャッシュキービューのためのものです。

' display contents of the ASP.NET Cache
If Cache.Count > 0 Then    
  cc.Append("<b>Contents of the ASP.NET Cache (" _    
          & Cache.Count.ToString() & " items):</b><br />")    
  For Each item As Object In Cache    
    cc.Append("Key:'" & item.Key & "' Type:" _    
            & item.Value.GetType().ToString() & "<br />")    
  Next    
Else    
  cc.Append("<b>ASP.NET Cache is empty</b>")    
End If
于 2009-02-10T21:31:16.257 に答える
0

http://msdn.microsoft.com/en-us/library/y18he7cw(v=vs.100).aspx

Response.Cache.SetExpires(DateTime.Now.AddSeconds(60));
Response.Cache.SetCacheability(HttpCacheability.Public);
Response.Cache.SetValidUntilExpires(true);
于 2013-01-31T11:17:05.603 に答える
0

Tek-Tipsから(詳細な説明についてはリンクを読んでください)

Response.Expires = 15
Response.ExpiresAbsolute = Now() - 2
Response.AddHeader "pragma","no-cache"
Response.AddHeader "cache-control","private"
Response.CacheControl = "private"
于 2009-03-09T20:59:58.497 に答える