我一直在阅读c#3.5中的缓存。有点困惑,并希望澄清有关详细说明
之间的区别 HttpContext.Current.Cache
vs HttpRuntime.Cache
vs System.Web.Caching.Cache
另外,我在非网络应用程序中使用上述任何一种内容都不推荐但是它有效。有什么缺点?
答案 0 :(得分:11)
System.Web.Caching.Cache
是实现Web应用程序缓存的类型。 HttpContext.Current.Cache
只是一个包装器并返回HttpRuntime.Cache
,它只是System.Web.Caching.Cache
的实例。
<强>更新强>
请参阅Is it OK to use HttpRuntime.Cache outside ASP.NET applications?了解您的第二部分。
更新:为什么需要包装HttpRuntime.Cache?
在我的个人意见中,HttpContext
是传递给IHttpHandler.ProcessPostBack
的类型,HttpApplication
公开HttpContext
传递的IHttpModule.Init
this.Page.Cache
}}。这将确保使用Method注入注入所有依赖项。因此,他们引入了一种间接性。
处理程序和模块应该不知道托管它们的HttpRuntime。当您在ASP.NET页面中时,建议使用HttpContext.Current.Cache
代替HttpRuntime.Cache
或HttpRuntime.Cache
,因为使用HttpContext.Current将涉及解析当前线程和{{1会创建一个外部依赖。 Page.Cache
初始化为HttpContext.Cache
,传递给ProcessRequest