Sitecore Content Delivery Server不清除缓存

时间:2014-02-26 21:44:35

标签: asp.net .net caching sitecore sitecore6

当从内容创作服务器发布到内容交付Web数据库的内容不会刷新内容交付服务器的缓存时,我们的团队遇到了问题。

我们有一个内容创作服务器,它有一个主数据库,核心数据库和Web数据库。我们还有一个内容交付服务器,它拥有自己的主服务器,核心服务器和Web服务器。我们有两个发布选项。一个将发布到内容创作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”配置中提取网站列表时,它到底做了什么?

3 个答案:

答案 0 :(得分:1)

正如Ruud所说,Sitecore Scaling指南将帮助您解决很多问题。

首先要查看的是,您是否已将 EnableEventQueues 设置为 true 。这将确保您的分布式节点正在主数据库中查找事件。

要寻找的第二件事是确保指定了实例名称,以便内容传递节点知道要查找的事件。这些设置为 InstanceName Publishing.PublishingInstance 。您的创作节点在两者中都具有相同的值,但您的传递节点应在PublishingInstance设置中具有创作节点名称。

最后,这可能只是我,从您的问题看来,您有两个核心数据库和两个主数据库?我不确定为什么您的交付节点需要自己的核心和主数据库,除非您正在复制。根据我的理解,Core数据库中的EventQueue表是所有实例用于彼此通信事件的表。确保以某种方式使您的交付和创作能够“共享”EventQueue表,方法是使用相同的Core DB,或者将您的创作Core复制到您的交付实例。

在这三件事和Sitecore Scaling指南之间,您应该能够让您的交付实例从创作中收听发布事件。

答案 1 :(得分:1)

在搜索此问题的解决方案时,没有任何标准建议对我有用。 只有当我按照此页面中的步骤操作时,我的缓存才会再次正确清除:http://sitecoreskills.blogspot.co.uk/2015/08/sitecore-html-cache-doesnt-clear.html

  

该解决方案与HTML缓存或事件队列完全无关。

     

Sitecore维护一个名为__System的传统Lucene索引。在我们的情况下,索引被锁定,因此无法更新。这以某种方式阻止了HTML缓存的清除。答案就是删除它!

     

事实证明,__System索引可以毫无问题地删除--Sitecore之后只是重新创建它。

答案 2 :(得分:0)

经过数小时的故障排除,我们尝试更改InstanceName文件上的ScalabilitySettings.config,并且在发布后开始清除缓存。

我相信您可以将InstanceName更改为任何值,并且它开始起作用。