Сайт не обновляется после публикации
Я настроил установку 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 на этих блоках и заставит полностью сбросить все кэши, без сомнения.