Вопрос или проблема
Сбросить кэшированный селектор в Adobe Experience Manager без сброса всей директории
Как я могу использовать кэширование на основе селектора в Adobe Experience Manager?
http://example.com/content/myapp/us/en.child1.xml
http://example.com/content/myapp/us/en.child2.xml
Допустим, у нас есть xml-файлы, кэшированные в папке, как указано ниже:
/<docroot-cache>/content/myapp/us/
->en.child1.xml
->en.child2.xml
->en.child99.xml
->en.child100.xml
->en.html
->en.model.json
Мне нужно обеспечить кэширование на основе селектора, то есть сбрасывать только en.child1.xml
и не сбрасывать en.child2.xml
, когда происходит запрос на сброс для /content/myapp/us/en.child1.xml
. Я попробовал сброс кэша через HTTP-запрос, как показано ниже:
GET http://mydispatcher/dispatcher/invalidate.cache
**Заголовки**
CQ-Action Activate
CQ-Handle /content/myapp/us/en.child1.xml
Content-Type Application/xml
Но все файлы в папке us
(т.е. все селекторы для страницы en
) становятся недействительными. Как я могу сделать недействительным только en.child1.xml
?
Просто публикую ответ, если это может быть полезно для кого-то еще, после некоторых исследований, я привел это в рабочее состояние с помощью CQ-Action Delete.
Ответ или решение
Для того чтобы выполнить сброс кеша селектора в Adobe Experience Manager (AEM) без необходимости очищать весь каталог, вы можете использовать механизм недействительности кеша, основанный на селекторах. Рассмотрим, как это можно сделать.
Введение в кеширование и его сброс
В AEM, при использовании адаптера диспетчера, кешируются различные версии контента в зависимости от их селекторов. Например, в вашем случае вы хотите сбросить кеш только для en.child1.xml
, не затрагивая другие файлы, такие как en.child2.xml
.
Использование CQ-Action Delete
По вашему вопросу, вы уже пробовали использовать CQ-Action Activate
, но это вызывает сброс кеша для всего каталога. Чтобы ограничить сброс только одним селектором, необходимо использовать CQ-Action Delete
. Вот шаги, которые вам нужно выполнить:
- Создание HTTP-запроса для сброса кеша: Используйте следующий формат HTTP-запроса для удаления кеша селектора:
GET http://mydispatcher/dispatcher/invalidate.cache
**Headers**
CQ-Action Delete
CQ-Handle /content/myapp/us/en.child1.xml
Content-Type Application/xml
-
Проверка конфигурации Dispatcher: Убедитесь, что конфигурация вашего диспетчера позволяет обработку запросов с
CQ-Action Delete
. Это важно, так как некоторые параметры конфигурации могут игнорировать эти запросы по безопасности или по другим причинам. - Мониторинг и логирование: После выполнения запроса желательно проверить логи AEM и диспетчера, чтобы убедиться, что кеш успешно очищен только для нужного селектора и другие XML файлы не были затронуты.
Заключение
Использование CQ-Action Delete
позволяет более точно управлять кешированием и недействительными данными, что особенно полезно в случаях, когда изменения касаются только конкретного ресурса. Следуя приведённым инструкциям, вы сможете эффективно реализовать селекторное кеширование и сбрасывать его при необходимости, не затрагивая другие файлы.
Если у вас возникнут дополнительные вопросы или потребуется помощь, пожалуйста, не стесняйтесь задавать их.