45

ASP.NETWebアプリケーションにキャッシュを追加しています。これは.NET4なので、System.Runtime.Caching名前空間のクラスを使用できます(これは、私が理解しているように、System.Web.Cachingにあるものと同様の機能を提供するために追加されましたが、Web以外の場合はアプリ。)

しかし、これWebアプリなので、System.Web.Cachingを使用したほうがよいでしょうか。それとも、新しいSystem.Runtime.Cachingは何らかの形で優れていますか?

4

2 に答える 2

46

Microsoft は、すべてのキャッシュ目的で System.Runtime.Caching を使用することをお勧めします。これを参照してください: http://msdn.microsoft.com/en-us/library/dd997357.aspx

ただし、人々が MemoryCache.Default インスタンスに問題を抱えているいくつかのスレッドに遭遇しました。しばらくすると、正常に動作しなくなります。Add メソッドまたは Set メソッドを使用して追加した項目は、実際にはキャッシュに追加されません。同じことを試してみたところ、MemoryCache.Default.Dispose() メソッドを明示的に呼び出すことでこの問題を再現できました。

リンクは次のとおりです: MemoryCache Empty : 設定後に null を返します

http://forums.asp.net/t/1736572.aspx/1

System.Web.Caching (HttpContext.Current.Cache) を使用することをお勧めします。

アップデート:

この問題は MS によって修正されました。以下の投稿で受け入れられた回答を確認してください: Runtime Cache Issue Resolved

于 2012-06-08T20:08:39.540 に答える
12

System.Runtime.Caching を使用すると、IIS ワーカー プロセスだけでなく、すべての .Net アプリにわたってキャッシュできます。そのため、複数のシナリオでキャッシュにアクセスする必要がある場合は、System.Runtime を使用してください。また、このキャッシュ アダプターを確認すると、ランタイム、Web、およびアプリ ファブリックのキャッシュを切り替えることができます。https://bitbucket.org/glav/cacheadapter

もう 1 つ、マルチサーバー ファームを使用し、負荷分散構成を使用している場合は、スティッキー セッションまたは分散キャッシュ モデルがあることを確認してください。

于 2012-06-07T17:49:11.357 に答える