Кеширование 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 или отдельных его частей.

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

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

HTML email в Drupal 9

Май 24, 2021 г.

Для отправки писем, Drupal 9 использует реализации интерфейса MailInterface (core/lib/Drupal/Core/Mail/MailInterface.php). И в коробке сразу же имеется ...

Читать

Установим контекстные фильтры в drupal views программно

Август 30, 2021 г.

Пример кода как рендерить блок views с программной установкой contextual filters. Контекстные фильтры устанавливаются методом ViewExecutable::setArguments(array $ARGS). В примере я передаю пару аргументов в качестве значений контекстных фильтров. ...

Читать

Проблема с сохранением asymmetric paragraphs в tmgmt

Октябрь 4, 2024 г.

Проблема описана вот тут, и там даже предлагается патч https://www.drupal.org/files/issues/2024-05-28/3134922-40.patch,который частично решает проблему, но в #43 siavash (Sia) более подробно рассказывает о том, как сохраняются данные, и становится ясно, ...

Читать

Проверка, что поле пустое в twig

Январь 28, 2022 г.

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

Читать
 

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

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



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