45

我正在向 ASP.NET Web 应用程序添加缓存。这是 .NET 4,因此我可以使用 System.Runtime.Caching 命名空间中的类(据我了解,它被添加以提供与 System.Web.Caching 中的功能相似的功能,但对于非 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 已修复此问题。检查以下帖子中接受的答案: 已解决运行时缓存问题

于 2012-06-08T20:08:39.540 回答
12

System.Runtime.Caching 允许您在所有 .Net 应用程序中进行缓存,而不仅仅是 IIS 工作进程。因此,如果您需要在多个场景中访问缓存,请使用 System.Runtime。您还可以检查此缓存适配器,它允许您在运行时、Web 和应用程序结构缓存之间进行交换。https://bitbucket.org/glav/cacheadapter

还有一件事,如果您有一个多服务器场,并且具有负载平衡配置,请确保您有粘性会话或分布式缓存模型。

于 2012-06-07T17:49:11.357 回答