当从内容创作服务器到内容交付 Web 数据库的发布不会刷新内容交付服务器的缓存时,我们的团队遇到了问题。
我们有一个内容创作服务器,其中包含主数据库、核心数据库和 Web 数据库。我们还有一个内容交付服务器,它有自己的主服务器、核心服务器和网络。我们有两种发布选项。将发布到内容创作网络数据库。另一个将发布到内容交付服务器的网络数据库。
我的问题:
1) 内容创作服务器上的发布如何知道清除内容交付服务器上的缓存?
在我们的站点定义文件中,我们定义了两个名为“publish:end”和“publish:end:remote”的事件。我们在此处附加的方法是 type="Sitecore.Publishing.HtmlCacheClearer, Sitecore.Kernel", method="ClearCache"
2)“publish:end”和“publish:end:remote”有什么区别?
我们为每个环境都有单独的站点定义文件。一种用于内容创作服务器,另一种用于内容交付服务器。由于向内容交付服务器的 Web 数据库的发布发生在内容创作服务器上 - 人们会假设它正在使用内容创作服务器的站点定义文件中声明的事件。
3) 我们可以将“内容交付站点”添加到内容创作站点定义中,然后将它们添加到“publish:end”和“publish:end:remote”事件声明中吗?
4) 是否需要将它们添加到其中一个或两个中?
5) 当内容创作网站提取“publish:end”和“publish:end:remote”配置中的网站列表时,它到底会做什么?
最佳答案
正如 Ruud 提到的,Sitecore 扩展指南将帮助您解决很多问题。
首先要检查的是您是否将 EnableEventQueues 设置为 true。这将确保您的分布式节点正在主数据库中查找事件。
要查找的第二件事是确保指定了实例名称,以便内容交付节点知道要查找哪些事件。这些设置是InstanceName 和Publishing.PublishingInstance。您的创作节点在两者中将具有相同的值,但您的交付节点应在 PublishingInstance 设置中具有创作节点名称。
最后,这可能只是我,从你的问题来看,你有两个核心数据库和两个主数据库?我不确定为什么您的交付节点需要自己的核心和主数据库,除非您正在复制。根据我的理解,核心数据库中的 EventQueue 表是所有实例用来相互传递事件的表。确保您的交付和创作能够以某种方式“共享”EventQueue 表,方法是使用相同的 Core DB,或者将您的创作核心复制到交付实例。
在这三件事和 Sitecore Scaling 指南之间,您应该能够让您的交付实例监听创作中的发布事件。
关于asp.net - Sitecore 内容交付服务器未清除缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22054027/