web-dev-qa-db-ja.com

System.Web.CachingまたはSystem.Runtime.Cachingは、.NET 4 Webアプリケーションに適していますか

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

しかし、これはis Webアプリなので、System.Web.Cachingを使用した方が良いでしょうか?または、新しいSystem.Runtime.Cachingは何らかの点で優れていますか?

44
Tim Goodman

マイクロソフトでは、すべてのキャッシュ目的で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)を使用することです

UPDATE:

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

45
dotnetster

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

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

12
Brad Ruderman