Cache Control
При выполнении 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 содержит одну или несколько записей, каждая из которых включает следующие элементы:
- Поля и директивы, при появлении которых в GraphQL запросе вступает в силу выбранное значение max-age
- Значение max-age

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