緩存是在ASP.NET開發中經常需要用到在技術,在使用過程中,通常會用到HttpRuntime.Cache和 HttpContext.Current.Cache。而且在使用過程中,通常會覺得這兩個似乎用哪一個都行,都能達到緩存 數據的目的。那麼這兩個Cache到底有什麼不同呢?在什麼時候用哪一個比較好呢?這裡談談我的一些了 解和看法吧。
兩者的異同
先來看看msdn的解釋
HttpContext.Cache : Gets the ASP.NET Cache object for the current request
HttpContext.Current : Gets the HttpContext object for the current request
從這個解釋看,得到的Cache對象是當前請求的Cache對象。個人認為,這個解釋有點誤導性,會讓 人誤以為這時的Cache對象只是對於當前的Request的。而稍微想一下之後,就會發現這種理解是錯誤的。 如果Cache的內容只對當前的Request有用,那有何須緩存呢?
既然msdn得解釋不行,那就直接看源代碼吧,^_^,用Reflector打開HttpContext.Cache, 可以看到
public Cache Cache { get { return HttpRuntime.Cache; } }
從這代碼可以看出,兩者返回的都是是一樣的。
難道這兩者真的就完全一樣嗎?再來看看HttpContext.Current
public static HttpContext Current { get { return (ContextBase.Current as HttpContext); } }
ContextBase的源代碼:
internal static object Current { get { return CallContext.HostContext; } }