.Net 4.0中的新类MemoryCache似乎就像asp.net缓存一样。我的问题是:
MemoryCache是否等同于在会话缓存中为用户存储对象/值,而不是在aspx页面后面的代码中存储。
存储在服务器上的MemoryCache中的值是否可以访问网页事件?
答案 0 :(得分:11)
MemoryCache是否等同于在会话缓存中为用户存储对象/值
不,它不等同。 ASP.NET Session对象是按用户键/值存储,而MemoryCache是应用程序级键/值存储(值在所有用户之间共享)。
存储在服务器上的MemoryCache中的值是否可以 可以访问网页事件吗?
在ASP.NET MVC中,通常没有网页事件,但您可以在应用程序中的任何位置访问存储在MemoryCache中的值。
基本上,在ASP.NET应用程序中,新的MemoryCache
对象只是旧HttpContext.Cache
对象的包装器(它将值存储在旧的Cache对象中)。
答案 1 :(得分:0)
用户会话状态与Web世界相关,而较新的MemoryCache
是一种新的实现,现在可以在其他类型的应用程序中概括缓存的可用性,例如控制台应用程序,winform应用程序等。MemoryCache
存储在w.r.t.创建其实例的应用程序域,并且是应用于访问该应用程序的所有用户。引自this MSDN链接:
Cache和MemoryCache类之间的主要区别是 MemoryCache类已被更改为可供.NET使用 不是ASP.NET应用程序的框架应用程序。例如, MemoryCache类与System.Web程序集没有依赖关系。 另一个区别是你可以创建多个实例 MemoryCache类用于相同的应用程序和相同的应用程序 AppDomain实例。
MemoryCache
类完全出现在一个单独的程序集System.Runtime.Caching.dll
中,可以引用
注意:MemoryCache
类和System.Web.Caching.Cache
类是位于不同dll中的不同实现,没有相互依赖性。从概念上讲,它们的行为看起来非常相似,无论如何它们在一天结束时都是缓存。
我建议您阅读this,this和this主题,以便更好地理解这些主题,并对此有一些很好的想法。
回答你的问题:
只要您正在进行网站开发,旧的Web缓存应该能够满足您的所有用例。在一个weebsite中可能有非常专业的用例,你需要更新的MemoryCache
,但我现在想不到。