Nesta página, fornecemos 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 armazenadas 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 modificar 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 que você configure seu serviço para armazenar falhas no cache, além de 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
- No Console do Google Cloud, acesse a página Balanceamento de carga.
- Clique no nome do seu balanceador de carga de aplicativo externo.
- Clique em Editar .
- Em Configuração de back-end, selecione um back-end e clique em Editar .
- Verifique se a opção Ativar o Cloud CDN está selecionada.
- Na parte inferior da janela, clique em Configurações avançadas.
- Clique em Ativar armazenamento em cache negativo.
- Clique em Adicionar política de armazenamento em cache negativo.
- Insira um código de status HTTP.
- Selecione um Cache time to live (TTL).
- Clique em Atualizar.
- Clique em Atualizar novamente.
gcloud
Nos buckets de back-end, use o comando gcloud compute backend-buckets
create ou
gcloud compute backend-buckets
update com
a sinalização --negative-caching
.
Nos serviços de back-end, use o comando gcloud compute backend-services
create ou
gcloud 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 serem armazenadas em cache por 60 segundos, e as respostas com o código de status 405
para serem armazenadas 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 nenhum cache negativo padrão quando há uma política.
Para 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 sua 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 sem 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 de tempo especificado pelo TTL ou não armazena em cache de nenhuma forma
se nenhum TTL estiver 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 configuração de TTL definida,
o Cloud CDN vai usar menos essa definição de TTL e a 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 configuração de TTL definida,
o Cloud CDN vai remover qualquer cabeçalho Cache-Control
enviado pela
origem. O Cloud CDN também sempre remove todos os cabeçalhos Expires
enviados pela
origem.
Se uma origem tiver o armazenamento em cache negativo ativado inicialmente, mas desativado (manualmente ou desativando o armazenamento em cache para um código de resposta específico), as respostas de erro em cache serão consideradas válidas com base apenas nos cabeçalhos 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 é mostrada do cache.
O Cloud CDN armazena em cache as respostas 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
- No Console do Google Cloud, acesse a página Balanceamento de carga.
- Clique no nome do seu balanceador de carga de aplicativo externo.
- Clique em Editar .
- Em Configuração de back-end, selecione um back-end e clique em Editar .
- Verifique se a opção Ativar o Cloud CDN está selecionada.
- Na parte inferior da janela, clique em Configurações avançadas.
- Desmarque a caixa de seleção ao lado de Ativar armazenamento em cache negativo.
- Clique em Atualizar.
- Clique em Atualizar novamente.
gcloud
Nos buckets de back-end, use o comando gcloud compute backend-buckets
create ou
gcloud compute backend-buckets
update com
a sinalização --no-negative-caching
.
Nos serviços de back-end, use o comando gcloud compute backend-services
create ou
gcloud 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 }