我正在向ASP.NET Web应用程序添加缓存。这是.NET 4,所以我可以使用System.Runtime.Caching命名空间中的类(据我所知,它被添加以提供与System.Web.Caching中类似的功能,但对于非Web-的应用程序。)
但是由于 是一个网络应用程序,我最好使用System.Web.Caching吗?或者更新的System.Runtime.Caching在某种程度上更胜一筹?
答案 0 :(得分:45)
Microsoft建议将System.Runtime.Caching用于所有缓存目的。请参阅:http://msdn.microsoft.com/en-us/library/dd997357.aspx
虽然,我遇到过一些人们遇到MemoryCache.Default实例问题的线程。过了一会儿,它停止正常工作。使用“添加”或“设置”方法添加的任何项目实际上都不会添加到缓存中。我尝试了同样的方法,并通过显式调用MemoryCache.Default.Dispose()方法重现了这个问题。
以下是链接: MemoryCache Empty : Returns null after being set
http://forums.asp.net/t/1736572.aspx/1
我的建议是使用System.Web.Caching(HttpContext.Current.Cache)
<强>更新强>
此问题已由MS修复。在下面的帖子中检查接受的答案: Runtime Cache Issue Resolved
答案 1 :(得分:12)
System.Runtime.Caching允许您跨所有.Net应用程序缓存,而不仅仅是IIS工作进程。因此,如果您有在多个方案中访问缓存的要求,请使用System.Runtime。您还可以检查此缓存适配器,它允许您在运行时,Web和应用程序结构缓存之间进行交换。 https://bitbucket.org/glav/cacheadapter
还有一件事,如果您有一个多服务器场,使用负载平衡配置,请确保您有粘性会话或分布式缓存模型。