Кеширование 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

Январь 28, 2022 г.

При переходе к Drupal 8/9 на twig шаблоны, часто возникает вопрос, как проверить что поле пустое. Наиболее точный ответ на мой взгляд помогает найти фильтр render, т.к. он позволяет получить результат рендера соответствующего поля, а не заниматься ...

Читать

Conditional Form Fields в Drupal

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

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

Читать

Показ анимации, что идет загрузка, для обновления контента views в режиме ajax

Май 22, 2021 г.

Подгрузка данных с сервера (например, при изменении параметров фильтра) происходит с небольшой задержкой, потому пользователь может не понять, среагировал как то сайт или нет на его действия. Задача состоит в том, чтобы показать, что идет загрузка ...

Читать

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

Июнь 3, 2024 г.

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

Читать
 

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

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



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