Usar armazenamento em cache negativo

Esta página fornece instruções para usar o armazenamento em cache negativo com o Cloud CDN. O armazenamento em cache negativo permite que você defina um TTL diferente para cada código de status.

O motivo disso é aplicar um controle refinado sobre o armazenamento em cache para erros ou redirecionamentos comuns. Isso diminui a latência da resposta, o que possibilita reduzir a carga na origem e melhorar a experiência do usuário final.

Antes de começar

  • Leia sobre modos de cache e conteúdo estático.

  • Verifique se o Cloud CDN está ativado. Para instruções, consulte Como usar o Cloud CDN.

  • Se necessário, atualize para a versão mais recente da CLI do Google Cloud:

    gcloud components update
    

Códigos de status e TTLs padrão

O armazenamento em cache negativo se aplica a códigos de status específicos, que estão listados na tabela a seguir.

O Cloud CDN aplica os seguintes TTLs padrão a esses códigos de status:

Código de status Significado TTL
HTTP 300 Múltipla escolha 10 minutos
HTTP 301 e 308 Redirecionamentos permanentes 10 minutos
HTTP 302 e 307 Redirecionamentos temporários Não são armazenados em cache por padrão
HTTP 404 Não encontrada 120 segundos
HTTP 405 Método não encontrado 60 segundos
HTTP 410 Desaparecido 120 segundos
HTTP 451 Indisponível por motivos legais 120 segundos
HTTP 501 Não implementado 60 segundos

É possível substituir esses valores padrão usando o armazenamento em cache negativo para definir um TTL de cache para o código de status HTTP especificado.

Como configurar o armazenamento em cache negativo

O armazenamento em cache negativo permite a configuração do serviço para armazenar em cache falhas e sucessos. Isso permite que o Cloud CDN proteja as origens de solicitações que geram erros (como 404 Not Found) da mesma forma que protege as origens de solicitações que geram respostas bem-sucedidas.

Console

  1. No console do Google Cloud , acesse a página Balanceamento de carga.

    Acesse a página Balanceamento de carga

  2. Clique no nome do balanceador de carga de aplicativo externo.
  3. Clique em Editar .
  4. Em Configuração de back-end, selecione um back-end e clique em Editar .
  5. Verifique se a opção Ativar o Cloud CDN está selecionada.
  6. Na parte inferior da janela, clique em Configurações avançadas.
  7. Clique em Ativar armazenamento em cache negativo.
  8. Clique em Adicionar política de armazenamento em cache negativo.
    1. Insira um código de status HTTP.
    2. Selecione um Time to live (TTL) do cache.
  9. Clique em Atualizar.
  10. Clique em Atualizar novamente.

gcloud

Nos buckets de back-end, use o comando gcloud beta compute backend-buckets create ou gcloud beta compute backend-buckets update com a sinalização --negative-caching.

Nos serviços de back-end, use o comando gcloud beta compute backend-services create ou gcloud beta compute backend-services update com a sinalização --negative-caching.

gcloud compute backend-buckets (create | update) BACKEND_BUCKET_NAME
    --negative-caching
gcloud compute backend-services (create | update) BACKEND_SERVICE_NAME
    --negative-caching

Para ativar o armazenamento em cache negativo de apenas duas respostas de erro específicas, por exemplo, defina respostas com o código de status 404 para armazenamento em cache por 60 segundos, e as respostas com o código de status 405 para armazenamento em cache por 120 segundos.

gcloud compute backend-services update BACKEND_SERVICE_NAME \
    --negative-caching \
    --cache-mode=CACHE_ALL_STATIC \
    --default-ttl=86400 \
    --negative-caching-policy='404=60,405=120'

api

Nos buckets de back-end, use a chamada de API Method: backendBuckets.insert ou Method: backendBuckets.update.

Nos serviços de back-end, use a chamada de API Method: backendServices.insert ou Method: backendServices.update.

Use uma das seguintes chamadas de API:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendBuckets
PUT https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendBuckets/BACKEND_BUCKET
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices
PUT https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/BACKEND_SERVICE

Adicione o snippet a seguir ao corpo da solicitação JSON:

"cdnPolicy": {
  "negativeCaching": ON,
  "negativeCachingPolicy": [
    {
      "code": STATUS_CODE,
      "ttl": TTL_SECONDS
    }
  ]
}

O armazenamento em cache negativo precisa estar ativado para definir as configurações de negativeCachingPolicy. Se você omitir a política e tiver negativeCaching ativado, o Cloud CDN usará os valores padrão listados em Códigos de status e TTLs padrão.

Ao especificar uma política de armazenamento em cache negativo, especifique um TTL de cache para todos os códigos de resposta que você quer armazenar em cache. O Cloud CDN não aplica armazenamento em cache negativo padrão quando existe uma política.

Ema STATUS_CODE, é possível especificar os seguintes códigos de status HTTP:

  • 300, 301, 302, 307, 308
  • 404, 405, 410, 421, 451
  • 501

Para cada código de status, é possível especificar alguns segundos para armazenar as respostas em cache. Para desativar o armazenamento em cache negativo do código de status, exclua o código da política de armazenamento em cache negativo.

O valor máximo permitido é de 1.800 segundos (30 minutos); No entanto, objetos acessados com pouca frequência podem ser removidos do cache antes do TTL definido.

Quando o modo de cache é definido como CACHE_ALL_STATIC ou USE_ORIGIN_HEADERS, o armazenamento em cache negativo é aplicado a respostas com o código de resposta especificado que não tem cabeçalhos Cache-Control ou Expires.

Quando o modo de cache é definido como FORCE_CACHE_ALL, o armazenamento em cache negativo substitui qualquer cabeçalho de armazenamento em cache definido pela origem e o Cloud CDN armazena em cache a resposta pelo período especificado pelo TTL ou não armazena a resposta em cache caso nenhum TTL esteja definido.

Além disso, quando o modo de cache é definido como FORCE_CACHE_ALL, o Cloud CDN também modifica o max-age enviado ao cliente no cabeçalho Cache-Control. Em particular, se um determinado erro tiver uma definição de TTL configurada, o Cloud CDN vai usar menos essa definição de TTL e da configuração client_ttl e vai enviar um cabeçalho Cache-Control: public,max-age=N com esse valor. Se um determinado erro não tiver uma definição de TTL configurada, o Cloud CDN vai remover qualquer cabeçalho Cache-Control enviado pela origem. O Cloud CDN também sempre removerá todos os cabeçalhos Expires enviados pela origem.

Se uma origem tiver o armazenamento em cache negativo ativado inicialmente, mas depois desativado (manualmente ou desativando o armazenamento em cache para um código de resposta específico), as respostas de erro armazenadas em cache serão consideradas válidas com base apenas no cabeçalho Cache-Control ou Expires. Portanto, depois que o armazenamento em cache negativo é desativado, uma resposta sem diretivas de idade de armazenamento em cache nos cabeçalhos não é disponibilizada no cache.

O Cloud CDN armazena em cache em resposta a solicitações GET. Para mais informações, consulte Conteúdo armazenável em cache.

Cada entrada de cache é identificada por uma chave de cache.

Como desativar o armazenamento em cache negativo

Console

  1. No console do Google Cloud , acesse a página Balanceamento de carga.

    Acesse a página Balanceamento de carga

  2. Clique no nome do balanceador de carga de aplicativo externo.
  3. Clique em Editar .
  4. Em Configuração de back-end, selecione um back-end e clique em Editar .
  5. Verifique se a opção Ativar o Cloud CDN está selecionada.
  6. Na parte inferior da janela, clique em Configurações avançadas.
  7. Desmarque a caixa de seleção ao lado de Ativar armazenamento em cache negativo.
  8. Clique em Atualizar.
  9. Clique em Atualizar novamente.

gcloud

Nos buckets de back-end, use o comando gcloud beta compute backend-buckets create ou gcloud beta compute backend-buckets update com a sinalização --no-negative-caching.

Nos serviços de back-end, use o comando gcloud beta compute backend-services create ou gcloud beta compute backend-services update com a sinalização --no-negative-caching.

gcloud compute backend-services (create | update) (BACKEND_SERVICE_NAME | BACKEND_BUCKET_NAME)
    --no-negative-caching

api

Nos buckets de back-end, use a chamada de API Method: backendBuckets.insert ou Method: backendBuckets.update.

Nos serviços de back-end, use a chamada de API Method: backendServices.insert ou Method: backendServices.update.

Use uma das seguintes chamadas de API:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendBuckets
PUT https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendBuckets/BACKEND_BUCKET
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices
PUT https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/BACKEND_SERVICE

Adicione o snippet a seguir ao corpo da solicitação JSON:

"cdnPolicy": {
  "negativeCaching": OFF
}