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

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

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

Drupal Commerce - расчет доставки для выбранного района

Август 26, 2021 г.

Есть список районов города, доставка в которые имеет фиксированную ставку. Пользователь выбирает район - программа должна подставить цену доставки для ...

Читать

Отсутствующие переводы в tmgmt

Сентябрь 26, 2024 г.

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

Читать

Drupal 9 за БН amazon cloudfront

Октябрь 12, 2021 г.

Типичная проблема сайта, когда тот оказывается за балансировщиком нагрузки (load balancer), это несоответствие части заголовков запроса клиента и тех заголовков, которые передаются балансировщиком серверу. Чаще всего мы сталкиваемся с этим при запуске ...

Читать

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

Июнь 3, 2024 г.

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

Читать
 

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

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



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