C# System.Runtime.Caching.MemoryCache与HttpRuntime.Cache-有什么区别吗?
我想知道C# System.Runtime.Caching.MemoryCache与HttpRuntime.Cache-有什么区别吗?,c#,asp.net-mvc,c#-4.0,caching,C#,Asp.net Mvc,C# 4.0,Caching,我想知道MemoryCache和HttpRuntime.Cache之间是否有任何区别,在ASP.NET MVC项目中首选哪一种 据我所知,两者都是线程安全的,API乍一看或多或少是相同的,所以在使用哪个API时有什么区别?获取当前应用程序的 该类类似于ASP.NET缓存类 MemoryCache类有许多属性和方法用于访问缓存,如果您使用过ASP.NETcache类,您将很熟悉这些属性和方法 HttpRuntime.Cache和MemoryCache之间的主要区别在于后者已被更改为可供非ASP.N
MemoryCache
和HttpRuntime.Cache
之间是否有任何区别,在ASP.NET MVC项目中首选哪一种
据我所知,两者都是线程安全的,API乍一看或多或少是相同的,所以在使用哪个API时有什么区别?获取当前应用程序的
该类类似于ASP.NET缓存
类
MemoryCache
类有许多属性和方法用于访问缓存,如果您使用过ASP.NETcache
类,您将很熟悉这些属性和方法
HttpRuntime.Cache
和MemoryCache
之间的主要区别在于后者已被更改为可供非ASP.NET应用程序的.NET Framework应用程序使用
补充阅读:
内存缓存就是它所说的,一种存储在内存中的缓存 缓存(请参阅和)将持久化到您在应用程序中配置它的任何内容 例如,请参见“ASP.NET 4.0:编写自定义输出缓存提供程序”
这是乔恩·戴维斯的文章。为了保持可读性,我删掉了现在已经过时的EntLib部分、简介以及结论
ASP.NET缓存 ASP.NET或System.Web.dll程序集确实具有缓存机制。它从来没有打算在web上下文之外使用,但是它可以在web之外使用,并且它在各种哈希表中执行上述所有过期行为 在浏览了Google之后,似乎有不少人讨论了.NET中的内置缓存功能,他们在非web项目中使用了ASP.NET缓存。这不再是.NET;中最可用、最受支持的内置缓存系统。NET4有一个ObjectCache,我稍后将进入它。Microsoft始终坚持ASP.NET缓存不用于web之外的用途。但许多人仍然被困在.NET 2.0和.NET 3.5中,需要一些东西来处理,这对许多人来说都是可行的,尽管MSDN明确指出: 注意:缓存类不打算在ASP.NET应用程序之外使用。它是为在ASP.NET中为Web应用程序提供缓存而设计和测试的。在其他类型的应用程序(如控制台应用程序或Windows窗体应用程序)中,ASP.NET缓存可能无法正常工作 ASP.NET缓存的类是System.Web.dll中的System.Web.Caching.cache。但是,不能简单地新建缓存对象。您必须从System.Web.HttpRuntime.Cache获取它
Cache cache = System.Web.HttpRuntime.Cache;
MSDN中记录了使用ASP.NET缓存的过程
赞成的意见:
var config = new NameValueCollection();
var cache = new MemoryCache("myMemCache", config);
cache.Add(new CacheItem("a", "b"),
new CacheItemPolicy
{
Priority = CacheItemPriority.NotRemovable,
SlidingExpiration=TimeSpan.FromMinutes(30)
});