System.Web.Caching或System.Runtime.Caching是否适用于.NET 4 Web应用程序

Tim*_*man 44 c# asp.net caching .net-4.0

我正在向ASP.NET Web应用程序添加缓存.这是.NET 4,所以我可以使用System.Runtime.Caching命名空间中的类(据我所知,它被添加以提供与System.Web.Caching中类似的功能,但对于非Web-应用.)

但由于这一个Web应用程序,我最好使用System.Web.Caching吗?或者是较新的System.Runtime.Caching在某种程度上优越?

dot*_*ter 45

Microsoft建议使用System.Runtime.Caching进行所有缓存.请参阅:http://msdn.microsoft.com/en-us/library/dd997357.aspx

虽然,我遇到了一些人们遇到MemoryCache.Default实例问题的线程.过了一会儿,它停止正常工作.使用"添加"或"设置"方法添加的任何项目实际上都不会添加到缓存中.我尝试了同样的方法,并通过显式调用MemoryCache.Default.Dispose()方法重现了这个问题.

以下是链接: MemoryCache Empty:设置后返回null

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

我的建议是使用System.Web.Caching(HttpContext.Current.Cache)

更新:

这个问题已由MS修复.检查以下帖子中接受的答案: 运行时缓存问题已解决

  • 大+1!请注意微软修复了这个错误 - 请参阅Scott Hanselman对上述链接问题的回答. (4认同)
  • 你能否请更新你的答案?我找到了这个问题和你的答案,但更多的搜索告诉我现在有一个修复,所以现在推荐Runtime.Caching :) (2认同)

Bra*_*man 12

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

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