HttpContext.Current.Cache与HttpRuntime.Cache

时间:2012-04-25 06:05:19

标签: c# asp.net-mvc caching

我一直在阅读c#3.5中的缓存。有点困惑,并希望澄清有关详细说明

之间的区别

HttpContext.Current.Cache vs HttpRuntime.Cache vs System.Web.Caching.Cache

另外,我在非网络应用程序中使用上述任何一种内容都不推荐但是它有效。有什么缺点?

1 个答案:

答案 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.CacheHttpRuntime.Cache,因为使用HttpContext.Current将涉及解析当前线程和{{1会创建一个外部依赖。 Page.Cache初始化为HttpContext.Cache,传递给ProcessRequest