Кэширование
КэшированиеCache Control

Cache Control

Included in the “Power Extensions” bundle

При выполнении queries к серверу GraphQL методом GET ответ GraphQL может быть закэширован на стороне клиента или на промежуточных этапах между клиентом и сервером (например, в CDN), с использованием стандартного HTTP-кэширования.

Это работает естественным образом для persisted queries, а для единственного endpoint и пользовательских endpoints — путём добавления параметра ?query={ GraphQL query } к endpoint.

Описание

HTTP-кэширование работает путём отправки заголовка Cache-Control со значением max-age в ответе, указывая, как долго ответ должен кэшироваться.

Расширение Cache Control предлагает списки Cache Control, в которых определяются пользовательские значения max-age для полей и директив. Таким образом, различные queries, содержащие разные комбинации полей и директив, будут давать разное значение max-age.

Значение max-age ответа вычисляется автоматически движком GraphQL. Его значение равно наименьшему max-age среди всех полей и директив в запрошенном запросе (как определено в списке Cache Control), либо no-store, если:

  • выполняется любая мутация
  • любое поле или директива имеет max-age со значением 0
  • правило контроля доступа должно проверить состояние пользователя для какого-либо поля или директивы (в этом случае ответ специфичен для пользователя и не может быть закэширован)

Определение политики cache control

Списки Cache Control

На сайт добавляется новый тип записи «Список Cache Control». Просматривать его записи можно на странице «Списки Cache Control» в меню, а нажав «Добавить новый список Cache Control», можно добавить новую запись в редакторе.

Списки Cache Control
Списки Cache Control

Редактор списка Cache Control

Каждый список Cache Control содержит одну или несколько записей, каждая из которых включает следующие элементы:

  • Поля и директивы, при появлении которых в GraphQL запросе вступает в силу выбранное значение max-age
  • Значение max-age

Запись Cache Control

После создания списка Cache Control можно настроить endpoint на его использование, отредактировав соответствующую конфигурацию схемы и выбрав элемент из списка в блоке «Списки Cache Control».

Выбор списка Cache Control в конфигурации схемы