Кеширование JSON ответа в Drupal

У нас есть контроллер, который выдаёт json ответ. Добавим кеширование.

Начнем с определения контроллера. Пусть сконфигурирован следующий mymodule.routing.yml:

Это значит, что у нас создан класс PublicApi в под каталоге модуля /src/Controller/PublicApi.php. Вот его изначальный код без кеширования.

Если мы хотим закешировать ответ, то нам понадобится другой класс для формирования ответа. Это — CacheableJsonResponse. Он позволяет настроить параметры кеширования с помощью метода addCacheableDependency.

Самая простая зависимость — это от времени.

Рассмотрим, например, установку кеша на 15 минут.

Еще существует как минимум два типа кеширования — это Tags и Context.

Cache tags

Тэги преимущественно связаны с контентом, например пользователями или нодами.

Если вы зададите:

То кеш вашего json будет сбрасываться при изменениях node с nid = 1, и пользователя с uid = 10. При следующем запросе значение вашего json будут рассчитано вновь, а не взято из кеша.

Cache context

Контексты обычно реализуют зависимость от внешних параметров.

Например, вы желаете, чтобы ответ зависел от GET параметра — param. Тогда

Так можно поставить кеш в зависимость от всего url или отдельных его частей.

С точки зрения безопасности, стоит подумать о допустимом разбросе значений параметра (-ов), по которым строится кеш.

Мало букафф? Читайте есчо !

Вывод всех локальных переменных в twig

Июнь 3, 2024 г.

Все видимые переменные шаблона можно посмотреть в переменной _context. Вывести их имена, используя перебор циклом for: [crayon-6a774cd9636af930534255/] В Drupal, если вы используете модуль devel, в twig будет доступна функция dpm: [crayon-6a774cd9636b6411425977/]

Читать

Conditional Form Fields в Drupal

Сентябрь 27, 2021 г.

Логика полей или условные поля - это удобная фича в Form API друпал. Она позволяет формализовать кучу мелкой логики на фронт-енд, связанной с взаимодействием пользователя с вашей формой. Здесь я приведу пару примеров использования, а углубиться ...

Читать

Подготовка строки для использования в качестве имени html класса

Январь 18, 2022 г.

То, что в семерке выполняется функцией drupal_html_class(), в Drupal 8 реализовано в виде статического метода\Drupal\Component\Utility\Html::getClass($str). Данная функция также востребована в шаблонах (twig). Здесь вы можете использовать фильтр ...

Читать

Как в Drupal 9 получить URL изображения, сохраненного в поле media

Июль 27, 2021 г.

Чтобы извлечь адрес изображения из картинки в поле типа media, требуется ряд преобразований с использованием Entity объектов Drupal. Предполагается, что вы уже загрузили entity с полем типа media (в примере называется - field_media) в какую то ...

Читать
 

Комментарии к «Кеширование JSON ответа в Drupal»

Понравилась статья? Есть вопросы? - пишите в комментариях.



Комментарий: