I have been reading a bit about caching in c# 3.5. Got a bit confused and would appreciate clarification on elaborating what is the difference between
HttpContext.Current.Cache
vs HttpRuntime.Cache
vs System.Web.Caching.Cache
Also, I have read using any of the above in non-web application is not recommended but it works. What are the drawbacks?
System.Web.Caching.Cache
is the type which implements the cache for a Web application. HttpContext.Current.Cache
is just a wrapper and return HttpRuntime.Cache
which is nothing but instance of System.Web.Caching.Cache
.
Update
Refer to Is it OK to use HttpRuntime.Cache outside ASP.NET applications? for your second part.
Update: Why HttpRuntime.Cache needs to be wrapped?
In my Personal Opinion, HttpContext
is the type which gets passed to IHttpHandler.ProcessPostBack
and HttpApplication
exposes HttpContext
which is passed IHttpModule.Init
. This would ensure all the dependencies are injected using Method injection. Hence they introduced a level of indirection.
The Handlers and Modules should be ignorant of the HttpRuntime on which they are hosted. While you are in a ASP.NET page, it is advisable to use this.Page.Cache
instead HttpContext.Current.Cache
or HttpRuntime.Cache
as using HttpContext.Current would involve a overhead of resolving the current thread and HttpRuntime.Cache
would create an external dependency. Page.Cache
is initialized with the HttpContext.Cache
which is passed to ProcessRequest
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With