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