Сбросить кэшированный селектор в Adobe Experience Manager без сброса всей директории

Вопрос или проблема

Сбросить кэшированный селектор в 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. Вот шаги, которые вам нужно выполнить:

  1. Создание HTTP-запроса для сброса кеша: Используйте следующий формат HTTP-запроса для удаления кеша селектора:
GET http://mydispatcher/dispatcher/invalidate.cache
**Headers**
CQ-Action Delete
CQ-Handle /content/myapp/us/en.child1.xml
Content-Type Application/xml
  1. Проверка конфигурации Dispatcher: Убедитесь, что конфигурация вашего диспетчера позволяет обработку запросов с CQ-Action Delete. Это важно, так как некоторые параметры конфигурации могут игнорировать эти запросы по безопасности или по другим причинам.

  2. Мониторинг и логирование: После выполнения запроса желательно проверить логи AEM и диспетчера, чтобы убедиться, что кеш успешно очищен только для нужного селектора и другие XML файлы не были затронуты.

Заключение

Использование CQ-Action Delete позволяет более точно управлять кешированием и недействительными данными, что особенно полезно в случаях, когда изменения касаются только конкретного ресурса. Следуя приведённым инструкциям, вы сможете эффективно реализовать селекторное кеширование и сбрасывать его при необходимости, не затрагивая другие файлы.

Если у вас возникнут дополнительные вопросы или потребуется помощь, пожалуйста, не стесняйтесь задавать их.

Оцените материал
Добавить комментарий

Капча загружается...