我有一個SharePoint 2010服務器場,並希望爲我自己的自定義對象使用對象緩存。SPCache與HttpRuntime.Cache
因爲它是一個ASP.net應用在它的核心,我可以用HttpRuntime.Cache。另一方面,SharePoint 2010提供它自己的SPCache。
爲什麼我會選擇SPCache而不是HttpRuntime.Cache?
我有一個SharePoint 2010服務器場,並希望爲我自己的自定義對象使用對象緩存。SPCache與HttpRuntime.Cache
因爲它是一個ASP.net應用在它的核心,我可以用HttpRuntime.Cache。另一方面,SharePoint 2010提供它自己的SPCache。
爲什麼我會選擇SPCache而不是HttpRuntime.Cache?
僅供參考,我在最後與SPCache一起去了。這確實是一個非常不尋常的SharePoint類:有據可查,簡單易用,無需管理。
它確實提供了一件事HttpRuntime.Cache沒有做:讓我創造我自己的subcaches和不抹整個HttpCache無效此。
我可以使用字典的HttpCache內達到相同的,但周圍的鎖定有一些潛在的問題。我反思了SPCache,發現了一個可靠的,線程安全的實現,所以這就是我所使用的。
作爲一個警告:SPCache似乎是SharePoint服務器,而不用於基金會。
這個問題很有趣。
這聽起來像你不應該使用SPCache(但通常MSDN頁面會說:「不打算由用戶代碼中使用」。)我們在談論
什麼樣的自定義對象的?
一般來說,你應該使用HttpRuntime.Cache定製開發(如果您開發具有Web部件的內部緩存的方式老SharePoint Web部件)。即使您提到SharePoint的根目錄是ASP.NET應用程序,您應該比HttpContext.Current.Cache更喜歡HttpRuntime.Cache。由於您不依賴上下文或System.Web命名空間,因此這將使它更易於進行單元測試或控制檯應用程序。
這可能是顯而易見的,但記得要保證線程安全(如鎖),也請記住,不是所有的SharePoint對象可以被序列化。
他比較Microsoft.Office.Server.ObjectCache.SPCache不是HttpContext.Current.Cache(它是System.Web.Caching.Cache) – djeeg 2011-03-27 22:37:26
SPCache的API設計很好奇,我不會用它 – 2011-03-27 12:55:18