Caching
CachingCache Control

Cache Control

Included in the “Power Extensions” bundle

Ao executar queries contra o servidor GraphQL pelo método GET, a resposta GraphQL pode ser armazenada em cache no lado do cliente ou em estágios intermediários entre cliente e servidor (como uma CDN), utilizando cache HTTP padrão.

Isso funciona naturalmente para queries persistidas, e para o endpoint único e endpoints personalizados funciona adicionando o parâmetro ?query={ GraphQL query } ao endpoint.

Descrição

O cache HTTP funciona enviando um cabeçalho Cache-Control com um valor max-age na resposta, indicando por quanto tempo a resposta deve ser armazenada em cache.

A extensão Cache Control oferece Listas de Cache Control, onde valores personalizados de max-age são definidos para campos e directives. Portanto, queries diferentes contendo diferentes combinações de campos e directives produzirão um valor max-age diferente.

O valor max-age da resposta é calculado automaticamente pelo motor GraphQL. Seu valor é o max-age mais baixo entre todos os campos e directives na query solicitada (conforme definido na Lista de Cache Control), ou no-store se:

  • qualquer mutation for executada
  • qualquer campo ou directive tiver max-age com valor 0
  • uma regra de Controle de Acesso precisar verificar o estado do usuário para qualquer campo ou directive (nesse caso, a resposta é específica do usuário e não pode ser armazenada em cache)

Definindo uma política de cache control

Listas de Cache Control

Um novo Custom Post Type "Lista de Cache Control" é adicionado ao site. Podemos navegar por suas entradas na página "Listas de Cache Control" no menu, e clicar em "Adicionar Nova Lista de Cache Control" para adicionar uma nova entrada no editor.

Listas de Cache Control
Listas de Cache Control

Editor de Lista de Cache Control

Cada Lista de Cache Control contém uma ou mais entradas, cada uma com os seguintes elementos:

  • Os campos e directives que, se aparecerem na query GraphQL, fazem o max-age selecionado entrar em vigor
  • O max-age

Entrada de Cache Control

Após criar a Lista de Cache Control, podemos fazer com que o endpoint a utilize editando a Schema Configuration correspondente, e selecionando o item da lista no bloco "Listas de Cache Control".

Selecionando uma Lista de Cache Control na Schema Configuration