HttpContext.Current.Cache与HttpRuntime.Cache

Ela*_*nda 5 c# asp.net-mvc caching

我一直在读c#3.5中的缓存.有点困惑,并希望澄清详细说明之间的区别

HttpContext.Current.Cachevs HttpRuntime.CachevsSystem.Web.Caching.Cache

此外,我已阅读使用上述任何非Web应用程序不推荐但它的工作原理.有什么缺点?

Ram*_*esh 11

System.Web.Caching.Cache是为Web应用程序实现缓存的类型. HttpContext.Current.Cache只是一个包装和返回HttpRuntime.Cache,它只是一个例子System.Web.Caching.Cache.

更新

请参阅在ASP.NET应用程序外部使用HttpRuntime.Cache可以吗?为你的第二部分.

更新:为什么需要包装HttpRuntime.Cache?

我个人认为,HttpContext是被传递的类型IHttpHandler.ProcessPostBackHttpApplication暴露HttpContext被传递IHttpModule.Init.这将确保使用Method注入注入所有依赖项.因此,他们引入了一种间接性.

处理程序和模块应该不知道托管它们的HttpRuntime.当你在一个ASP.NET页面,最好是使用this.Page.Cache替代HttpContext.Current.CacheHttpRuntime.Cache作为使用HttpContext.Current将涉及解决当前线程的开销,HttpRuntime.Cache将创建一个外部依赖.Page.Cache初始化HttpContext.Cache为传递给ProcessRequest