Adicionando cache HTTP
Quando as queries são executadas contra o servidor GraphQL usando GET (em vez do método mais tradicional POST), a resposta GraphQL pode ser armazenada em cache no lado do cliente ou em estágios intermediários entre o cliente e o servidor (como um CDN), utilizando o cache HTTP padrão.
Isso funciona naturalmente para persisted queries, e para o single endpoint e custom endpoints pode funcionar adicionando o parâmetro ?query={ GraphQL query } ao endpoint.
A configuração é criada por meio de uma lista de controle de cache, e entregue ao endpoint via configuração de schema.
Executando o endpoint via GET
As persisted queries já são adequadas para serem executadas via GET, pois armazenam a query GraphQL no servidor (ou seja, ela não precisa ser fornecida no corpo da requisição).
Para o single endpoint e custom endpoints, porém, a query deve ser fornecida no parâmetro ?query=... anexado à URL do endpoint.
Por exemplo, a seguinte query GraphQL:
{
posts {
id
title
url
author {
id
name
url
}
}
}...pode ser executada via GET contra o single endpoint assim:
https://mysite.com/graphql/?query={ posts { id title url author { id name url } } }
Cálculo automático do max-age
O valor max-age da resposta é calculado automaticamente a partir das listas de controle de acesso atribuídas ao endpoint (via configuração de schema).
Este valor é o menor valor de max-age entre todos os campos e directives na query solicitada, ou no-store se:
- alguma mutation for executada
- algum campo ou directive tiver
max-agecom valor0 - uma regra de controle de acesso precisar verificar o estado do usuário para algum campo ou directive (nesse caso, a resposta é específica para o usuário e não pode ser armazenada em cache)
Max-age padrão
Campos que não receberam um max-age específico usarão o valor padrão, definido na Configuração de Schema:

Se não definido, será usado o valor max-age padrão definido na página de Configurações, na aba "Cache Control". Este valor, que é 86400 segundos, pode ser modificado nas Configurações.
Exemplo
Suponhamos que temos a seguinte configuração de valores max-age para campos do tipo User:
name=>600url=>30
Então, a resposta a esta query terá o valor max-age definido como 86400 (porque nem displayName nem email foram configurados, portanto usam o valor padrão):
query {
users {
displayName
email
}
}A resposta a esta query terá o valor max-age definido como 30 (correspondente a url, que é o menor valor entre todos os campos configurados):
query {
user(by: {id: 1}) {
name
url
}
}A resposta a esta query terá o valor max-age definido como no-store (porque o campo me requer estado do usuário):
query {
me {
name
url
}
}A resposta a esta query terá o valor max-age definido como no-store (porque executa uma mutation):
mutation {
createPost {
id
}
}Acessando todas as listas de controle de cache
Clicando em "Cache Control Lists" no menu do plugin, é exibida a lista de todas as listas de controle de cache criadas:

Criando uma nova lista de controle de cache
Clique no botão "Add New Cache Control List" para abrir o editor do WordPress:

Dê um título à lista de controle de cache, adicione entradas com campos e directives, e configure o valor max-age para cada um:

Quando estiver pronto, clique no botão Publish. A nova lista de controle de cache ficará então disponível para a configuração de schema.
Entradas de Cache Control
Cada lista de controle de cache contém uma ou várias entradas, cada uma com os seguintes elementos:
- Os campos para os quais configurar o cache
- Os directives para os quais configurar o cache
- O valor
max-agepara cada um

Selecionando campos de interfaces
Além de campos de tipos, também podemos selecionar campos de interfaces. Nesse caso, o valor max-age é aplicado ao consultar esses campos a partir de qualquer tipo que implemente a interface.

Descrevendo a lista de controle de cache
Use o campo "Excerpt", no painel de configurações do documento, para fornecer uma descrição à lista de controle de cache.
Veja mais informações no guia Adicionando uma descrição à API.
Usando a lista de controle de cache
Após criar a lista de controle de cache, podemos fazer com que o Custom Endpoint ou a Persisted Query a utilize editando a Configuração de Schema correspondente, e selecionando a ACL na lista do bloco "Cache Control Lists".

Se a configuração não for personalizada, serão usadas as listas de controle de cache padrão definidas na página de Configurações, na aba "Cache Control":
