3

我已将 Sitecore 安装设置到两个不同的 IIS 站点。一个包含所有 Sitecore Admin 文件,另一个包含一个干净的仅 Web 文件,共享相同的 Web.config,而我的 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 节点传播到另一个节点的任何建议。我认为问题在于HtmlCacheClearer为 Sitecore.Admin 节点运行,而不是为另一个运行。

4

4 回答 4

6

您需要启用 EventQueues。

EventQueues 将不同的事件(如发布、项目保存等)传播到前端服务器。

基本上你需要重命名一个配置文件。

/App_Config/Include/ScalabilitySettings.config.example 到 ScalabilitySettings.config

该配置文件启用事件队列和其他一些配置。

我建议阅读 Sitecore Scaling 指南。

http://sdn.sitecore.net/Reference/Sitecore%206/Scaling%20Guide.aspx

于 2013-09-19T21:16:16.850 回答
2

就像邓斯顿说的,确保 ScalabilitySettings.config 文件配置正确

  • 通过启用 EventQueue
  • 并确保 Content Delivery 服务器上的实例名称在每个服务器上都是唯一的,例如“MachineName-CD1,MachineName-CD2”。

并确保在 PublishEnd:Remote 事件中为您的网站名称添加了 HtmlCacheClearer 事件。

于 2013-09-20T10:22:01.107 回答
1

除了像邓斯顿说的那样启用事件队列外,还要确保将您的网站名称添加到 publish:end 和 publish:end:remote HtmlCacheClear 事件中,如果您使用的是不同的站点,则默认的“网站”,否则您的 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>
于 2013-09-20T07:00:04.053 回答
0

但是,通过发布,听起来您可能正在谈论部署新代码,并且您希望它触发跨多个 Web 服务器的应用程序池重新启动,无论如何?如果是这种情况,您可以将这样的内容添加到您构建的 Publishing.IISReset 的逻辑中。它可以连接到您的各种仅面向公众的实例并执行以下操作:

appcmd recycle apppool sitecore6

这显然会在这些盒子上重新启动 Sitecore 并导致所有缓存完全重置,毫无疑问。

于 2013-09-19T21:25:01.553 回答