使多个 WFE 中的缓存无效的事件接收器

Event receiver to invalidate cache in multiple WFE

当列表项事件接收器在多个 WFE 场中触发时,它会在其他 WFE 中触发吗?

我目前没有资源来亲自测试这个问题,我的搜索没有给我关于这个问题的任何结论。

背景:我有一个设置列表,用于存储整个应用程序使用的配置设置,普通用户无法访问此列表,因此使用 RunWithElevatedPrivileges 来读取项目。其中一些项目经常被访问,我正在考虑将它们存储在某种形式的缓存中,并添加一个项目事件接收器以在修改时使缓存无效。

在 SharePoint 场中,每个用户请求都可能由不同的 WFE 服务器处理。这取决于负载均衡器的决定。因此,每个更新都可以由不同的 WFE 服务器处理,事件接收器是否在同一服务器上触发并不重要。

您可以使用与更新操作在同一线程中执行的同步事件接收器。但请记住,每个更新操作都可以由不同的服务器处理。

重点是使用这种所有服务器都可以访问的缓存。没有内存缓存会帮助你。您需要缓存保存在例如SQL。这里有 MSDN, MSDN 篇关于 SharePoint 缓存的文章。

请记住,并非所有数据都可以缓存,因为它们不是线程安全的。这意味着它们不能被持久化。这些通常是文件处理程序、TCP 端口、...