SPCache与HttpRuntime.Cache

时间:2011-03-27 04:52:47

标签: .net asp.net sharepoint caching sharepoint-2010

我有一个SharePoint 2010服务器场,并希望对我自己的自定义对象使用对象缓存。

由于它是ASP.net应用程序的核心,我可以使用HttpRuntime.Cache。另一方面,SharePoint 2010提供了自己的SPCache

为什么我会在HttpRuntime.Cache上选择SPCache?

3 个答案:

答案 0 :(得分:4)

仅供参考,我最后选择了SPCache。它确实是一个非常不寻常的SharePoint类:文档齐全,简单易用,无需管理。

它确实提供了HttpRuntime.Cache不做的一件事:允许我创建自己的子语句并使其无效而不擦除整个HttpCache。

我可以使用HttpCache中的Dictionary来实现相同的功能,但是锁定它有一些潜在的问题。我在SPCache上反思并发现了一个可靠,线程安全的实现,所以这就是我的用途。

作为警告:SPCache似乎只是SharePoint Server,而不是Foundation。

答案 1 :(得分:1)

这个问题很有趣。

  • Google不会返回实施SPCache的结果
  • 搜索无瑕疵的代码;在User Profile系统中仅显示使用SPCache的两个内部类(DataCache和DBCache)。

听起来你不应该使用SPCache(但通常msdn页面会说“不打算被用户代码使用”。)

答案 2 :(得分:1)

我们在谈论什么样的自定义对象?

通常,您应该使用HttpRuntime.Cache进行自定义开发(如果您针对旧的SharePoint Web部件进行开发,则可以在Web部件中进行缓存)。即使您在根目录中提到SharePoint是一个ASP.NET应用程序,您也应该更喜欢HttpRuntime.Cache而不是HttpContext.Current.Cache。这将使单元测试或控制台应用程序更具可移植性,因为您不依赖于上下文或System.Web命名空间。

这可能是显而易见的,但请记住保护线程安全(例如锁定),并记住并非所有SharePoint对象都可以序列化。