我已将Sitecore安装设置到两个不同的IIS站点。一个包含所有Sitecore Admin文件,另一个包含共享相同Web.config的干净Web文件,而我的Data文件夹在两个文件夹之外。
-Sitecore.Data - 诊所和日志 -Sitecore.Admin --Sitecore(带文件的文件夹) -Sitecore.Web --html,css和js文件
我遇到的问题是,在我从Sitecore.Admin文件夹发布后,除非我为Sitecore.Web回收了应用程序池,否则Sitecore.Web不会随更改一起更新。我尝试以编程方式添加用于回收应用程序池的任务,但没有成功。
<processor type="MySite.Sitecore.Publishing.IISReset, MySite.Sitecore" />
有关如何将更改从一个IIS节点传播到另一个IIS节点的任何建议。我认为问题是,HtmlCacheClearer
是针对Sitecore.Admin节点运行的,而不是针对另一个节点运行的。
答案 0 :(得分:6)
您需要启用EventQueues。
EventQueues将不同的事件传播到前端服务器,如发布,项目保存等。
基本上你需要重命名配置文件。
/App_Config/Include/ScalabilitySettings.config.example to ScalabilitySettings.config
该配置文件启用事件队列和其他一些配置。
我建议您阅读Sitecore Scaling指南。
http://sdn.sitecore.net/Reference/Sitecore%206/Scaling%20Guide.aspx
答案 1 :(得分:2)
就像dunston所说,确保ScalabilitySettings.config文件配置正确
并确保在PublishEnd:Remote事件中为您的网站名称添加了HtmlCacheClearer事件。
答案 2 :(得分:1)
除了启用像dunston这样的事件队列之外,还要确保将您的网站名称添加到publish:end和publish:end:远程HtmlCacheClear事件,如果您使用的是其他站点,则默认为“website”,否则为Html发布后,缓存不会被清除。
<event name="publish:end">
<handler type="Sitecore.Publishing.HtmlCacheClearer, Sitecore.Kernel" method="ClearCache">
<sites hint="list">
<site>website</site>
</sites>
</handler>
</event>
<event name="publish:end:remote">
<handler type="Sitecore.Publishing.HtmlCacheClearer, Sitecore.Kernel" method="ClearCache">
<sites hint="list">
<site>website</site>
</sites>
</handler>
</event>
答案 3 :(得分:0)
通过发布,听起来您可能正在谈论部署新代码,并且您希望它能够在多个Web服务器上重启应用程序池,无论如何?如果是这种情况,您可以将这样的内容添加到您构建的Publishing.IISReset的逻辑中。它可以连接到各种面向公众的实例,并执行以下操作:
appcmd recycle apppool sitecore6
这显然会在这些盒子上重启Sitecore并导致所有缓存完全重置,毫无疑问。