Сайт не обновляется после публикации

Я настроил установку Sitecore на два разных сайта IIS. В одном есть все файлы администратора Sitecore, а в другом - только чистые веб-файлы, совместно использующие один и тот же файл Web.config, а папка "Мои данные" находится за пределами обеих папок.

-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 ответа

Решение

Вам необходимо включить EventQueues.

EventQueues распространяет различные события, такие как публикация, сохранение элементов и т. Д., На внешние серверы.

В основном вам нужно переименовать файл конфигурации.

/App_Config/Include/ScalabilitySettings.config.example to ScalabilitySettings.config

Этот файл конфигурации включает очередь событий и некоторые другие конфигурации.

Я рекомендую прочитать руководство по масштабированию Sitecore.

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

Как сказал Данстон, убедитесь, что файл ScalabilitySettings.config настроен правильно

  • Включив EventQueue
  • И убедитесь, что имя экземпляра на сервере доставки контента является уникальным для каждого сервера, например "MachineName-CD1, MachineName-CD2".

И убедитесь, что событие HtmlCacheClearer добавлено для имени вашего веб-сайта в PublishEnd:Remote event.

Помимо включения очереди событий, как сказал Данстон, также убедитесь, что имя вашего сайта добавлено в события 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>

Однако, публикуя, кажется, что вы, возможно, говорите о развертывании нового кода и хотите, чтобы он вызывал перезапуск пула приложений на нескольких веб-серверах, независимо от того, Если это так, вы можете добавить что-то подобное в логику этого Publishing.IISReset, который вы создали. Он может подключаться к различным общедоступным экземплярам и выполнять что-то вроде:

appcmd recycle apppool sitecore6

Это, очевидно, перезапустит Sitecore на этих блоках и заставит полностью сбросить все кэши, без сомнения.

Другие вопросы по тегам