按標題顯示。我希望能夠將某些數據保存在緩存對象中,但此對象必須對所有用戶/會話都可用,並且可能會過期。HttpContext.Current.Cache是否可用於所有會話
什麼是在asp.net web應用程序中實現此目的的最佳方法?
按標題顯示。我希望能夠將某些數據保存在緩存對象中,但此對象必須對所有用戶/會話都可用,並且可能會過期。HttpContext.Current.Cache是否可用於所有會話
什麼是在asp.net web應用程序中實現此目的的最佳方法?
HttpContext.Current
適用於所有頁面,但不一定適用於所有線程。如果您嘗試在後臺線程,ThreadPool
委託,異步調用(使用ASP.NET異步頁面)等內部使用它,您將以NullReferenceException
結束。
如果您需要從庫類(即不知道當前請求的類)訪問緩存,則應該使用HttpRuntime.Cache
代替。這更可靠,因爲它不依賴於HttpContext
。
HttpContext.Current.Cache將會出現,但只有當您不能訪問您的上下文成員時纔會使用Current。
也回答第二個問題,是的,緩存對象是應用程序的全局對象。
這裏有一個很好的介紹,以高速緩存...
How to cache in ASP.NET by using Visual C# .NET
和...
Caching with ASP.NET。不要跳過第2部分,「數據緩存」
4GuysFromRolla - 哇,這是從過去的爆炸:-)。自2002年以來,ASP.Net中的緩存是否真的沒有變化? – nashwan 2012-12-17 10:58:40
@Aaronnaught - 我不知道除了訪問HttpContext.Current之外有什麼區別,因爲HttpContext.Current.Cache返回HttpRuntime.Cache。 – Thomas 2010-05-04 02:57:18
@Aononaught - 我想你說的是不必依賴於HttpContext.Current其實就是這樣的優勢嗎? – Thomas 2010-05-04 02:58:34
+1,HttpContext.Current應該小心使用。 – kervin 2010-05-04 03:01:58