Kentico 12 Кеширование в разных средах - PullRequest
0 голосов
/ 24 апреля 2020

MVC C# проект с бэкэндом Kentico 12 (нет веб-частей drag-n-drop, просто использующих его как бэкэнд CMS, с вызовами API-интерфейсов Kentico для данных). По сути, у нас есть проблема с кэшированием, которая возникает только в одной из наших сред (PROD). Я считаю, что это скорее проблема IIS или среды, чем проблема Kentico. Позвольте мне дать вам некоторые подробности: Kentico 12 MVC v12.0.34 (обновленный с K11) и, как уже говорилось ранее, мы не используем какие-либо веб-части / компоненты. Kentico - это всего лишь серверная CMS, и мы используем API-интерфейсы Kentico для извлечения данных для каждой страницы и развернули наши собственные представления и модели.

У нас есть 2 среды, STG и PROD, обе из которых работают под управлением Win Server 2016, которые немного другая версия сборки ОС STG: v1607 сборка ОС 14393.3115, IIS v10.0.14393.0 PROD: сборка ОС v1607 14393.2999, IIS v10.0.14393.0

В пределах Kentico, когда мы обновляем категорию, происходит событие подключается для ОБНОВЛЕНИЯ и выполняет следующий код:

CacheHelper.TouchKeys(new[] { "cms.category|all" });

Это очищает кэширование ВСЕХ категорий (CacheDependency в Kentico), и когда веб-страница обновляется, метод GetAllCategories, который извлекает, как вы уже догадались, ВСЕ категории вызывается снова , Если вы попробуете это в другой раз, вы получите кэшированную версию, пока не произойдут изменения в категориях (или не истечет время кэширования, например, месяц). Работает в точности так, как вы думаете на поле STG.

Просто чтобы посмотреть, что происходит, я добавил некоторую информацию в журнале Kentico, чтобы проверить, что происходит в разных местах при запуске этого события обновления. Из EventArgs я могу получить источник события (какая категория его инициировала), и я могу видеть, когда он использует кэшированную информацию и когда он получает ее из БД. Круто.

Проблема, с которой я сталкиваюсь, заключается в том, что, когда я работаю на PROD, используя ту же самую базу кода, с тем же журналом и запускаю одно и то же событие, кэш не освобождается. В журнале событий говорится, что это так, но когда веб-страница обновляется, GetAllCategories - это не новое, а последнее кэшированное значение. Единственный способ получить новую версию - перезапустить пул приложений или закрыть / запустить приложение в IIS.

В классе / методах нет кэширования вывода. Одинаковая база кода на 2 разных серверах. Существуют ли какие-либо переменные среды или настройки IIS, которые могли бы быть установлены по-другому на коробке PROD?

Есть какие-нибудь мысли, что может быть причиной этого? Другие места, чтобы посмотреть на веб-сервере? Спасибо за вашу помощь!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...