2012-04-25 82 views
5

我一直在閱讀關於C#3.5緩存的一些信息。有一點困惑,並希望在闡述什麼是VS System.Web.Caching.CacheHttpContext.Current.Cache與HttpRuntime.Cache

而且

HttpContext.Current.Cache VS HttpRuntime.Cache之間的差異澄清,我一直在使用任何非Web應用程序上面,不建議讀,但它的工作原理。有什麼缺點?

回答

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.ProcessPostBackHttpApplication暴露出其傳遞IHttpModule.InitHttpContext類型。這將確保使用方法注入來注入所有依賴項。因此他們引入了一個間接的層次。

處理程序和模塊應該不知道它們所在的HttpRuntime。當您處於ASP.NET頁面中時,建議使用this.Page.Cache而不是HttpContext.Current.CacheHttpRuntime.Cache作爲使用HttpContext.Current會涉及解決當前線程的開銷,並且HttpRuntime.Cache會創建外部依賴項。 Page.Cache初始化爲HttpContext.Cache,它傳遞給ProcessRequest

+1

爲什麼'HttpRuntime.Cache'需要被包裝? – 2012-04-25 06:36:51

+0

更新了我的答案 – Ramesh 2012-04-25 06:57:45