Compartilhar via


Cache-Control em cache de consulta REST

Para pontos de extremidade REST, você pode influenciar como o DAB (Construtor de API de Dados) usa seu cache de resultados de consulta interno com o cabeçalho da solicitação Cache-Control .

Importante

Se o cache estiver desabilitado na configuração de runtime, essas diretivas serão ignoradas e as consultas serão executadas normalmente.

Valores de Cache-Control com suporte

Value Comportamento
no-cache Força o DAB a ignorar caches L1 e L2, buscar novos dados do banco de dados e atualizar os caches com o novo resultado.
no-store Informa ao DAB para não armazenar em cache a resposta (não armazena em L1 ou L2 e não tenta buscar do cache).

Comportamento

  • A correspondência de diretivas não diferencia maiúsculas de minúsculas.
  • O DAB não interpreta outras diretivas padrão Cache-Control , como a idade máxima ou o máximo obsoleto.
  • Aplica-se somente às operações de consulta REST. Não usado para diretivas de cache no nível de solicitação do GraphQL.
  • Os valores de cabeçalho HTTP de solicitação Cache-Control controlam o cache L1 e L2.

Observação

O DAB não define cabeçalhos de resposta de controle de cache para qualquer operação de cache.

Diretiva: sem cache

Força uma nova leitura e atualiza as camadas de cache.

Solicitação

GET /api/Books
Cache-Control: no-cache
Accept: application/json

Resposta (exemplo)

HTTP/1.1 200 OK
Content-Type: application/json

[
  { "id": 1, "title": "The Hobbit" },
  { "id": 2, "title": "The Silmarillion" }
]

Efeito: o cache agora contém esse novo resultado (sujeito a TTL configurado).

Diretiva: sem repositório

Usa um valor armazenado em cache existente, se presente; caso contrário, consulta o banco de dados, mas não preenche (ou atualiza) o cache com o novo resultado.

Solicitação

GET /api/Books
Cache-Control: no-store
Accept: application/json

Resposta (exemplo)

HTTP/1.1 200 OK
Content-Type: application/json

[
  { "id": 1, "title": "The Hobbit" },
  { "id": 2, "title": "The Silmarillion" }
]

Efeito: se esse resultado ainda não tiver sido armazenado em cache, ele não será armazenado. Uma solicitação posterior only-if-cached poderá falhar se nenhuma solicitação anterior preenchesse o cache.

Review

  • Use no-cache quando precisar forçar uma atualização do banco de dados e também atualizar o cache.
  • Use no-store quando quiser os dados, mas não quiser que essa resposta altere o cache (embora ele possa ler um valor armazenado em cache existente).
  • Omita o cabeçalho para o comportamento normal de cache.