我有一个SharePoint 2010场,并希望对我自己的自定义对象使用对象缓存。
因为它的核心是一个ASP.net应用程序,所以我可以使用HttpRuntime.Cache。另一方面,SharePoint 2010提供了自己的SPCache。
为什么我要选择SPCache而不是HttpRuntime.Cache one?
发布于 2011-04-07 04:51:04
仅供参考,我最后还是和SPCache一起去的。它确实是一个非常不同寻常的SharePoint类:文档很好,使用起来简单明了,管理起来也很轻松。
它确实提供了HttpRuntime.Cache不能做的一件事:允许我创建自己的子缓存,并在不擦除整个HttpCache的情况下使其无效。
我可以在HttpCache中使用字典来实现相同的功能,但是锁定它有一些潜在的问题。我对SPCache进行了反思,发现了一个可靠的、线程安全的实现,这就是我所做的。
需要注意的是: SPCache似乎只适用于SharePoint服务器,不适用于基金会。
发布于 2011-03-27 17:14:49
这个问题很有趣。
听起来您不应该使用SPCache (但msdn页面通常会显示“不打算由用户代码使用”)。
发布于 2011-03-27 20:04:00
我们谈论的是哪种自定义对象?
通常,您应该使用HttpRuntime.Cache进行自定义开发(如果您针对旧的SharePoint web部件进行开发,则有一种方法可以在web部件中进行缓存)。即使您在根目录中提到SharePoint是一个ASP.NET应用程序,您也应该更喜欢HttpRuntime.Cache而不是HttpContext.Current.Cache。这将使它更便于单元测试或控制台应用程序,因为您不依赖于上下文或System.Web名称空间。
这可能是显而易见的,但请记住确保线程安全(例如锁定),并记住并不是所有的SharePoint对象都可以序列化。
https://stackoverflow.com/questions/5447317
复制相似问题