我正在向 ASP.NET Web 应用程序添加缓存。这是 .NET 4,因此我可以使用 System.Runtime.Caching 命名空间中的类(据我了解,它被添加以提供与 System.Web.Caching 中的功能相似的功能,但对于非 Web-应用。)
但既然这是一个网络应用程序,我最好使用 System.Web.Caching 吗?还是较新的 System.Runtime.Caching 在某些方面更胜一筹?
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 已修复此问题。检查以下帖子中接受的答案: 已解决运行时缓存问题
System.Runtime.Caching 允许您在所有 .Net 应用程序中进行缓存,而不仅仅是 IIS 工作进程。因此,如果您需要在多个场景中访问缓存,请使用 System.Runtime。您还可以检查此缓存适配器,它允许您在运行时、Web 和应用程序结构缓存之间进行交换。https://bitbucket.org/glav/cacheadapter
还有一件事,如果您有一个多服务器场,并且具有负载平衡配置,请确保您有粘性会话或分布式缓存模型。