Esta página contém instruções para usar o armazenamento em cache negativo com o Cloud CDN. O armazenamento em cache negativo permite-lhe definir um TTL diferente para cada código de estado.
O motivo para o fazer é aplicar um controlo detalhado sobre o armazenamento em cache para erros ou redirecionamentos comuns. Isto pode reduzir a carga nas suas origens e melhorar a experiência do utilizador final, reduzindo a latência de resposta.
Antes de começar
Leia sobre os modos de cache e o conteúdo estático.
Certifique-se de que o Cloud CDN está ativado. Para obter instruções, consulte o artigo Usar o Cloud CDN.
Se necessário, atualize para a versão mais recente da CLI Google Cloud:
gcloud components update
Códigos de estado e TTLs predefinidos
O armazenamento em cache negativo aplica-se a códigos de estado específicos, que estão listados na tabela seguinte.
A RFC na nuvem aplica os seguintes TTLs predefinidos a estes códigos de estado:
| Código de estado | Significado | TTL |
|---|---|---|
| HTTP 300 | Escolha múltipla | 10 minutos |
| HTTP 301 e 308 | Redirecionamentos permanentes | 10 minutos |
| HTTP 302 e 307 | Redirecionamentos temporários | Não armazenado em cache por predefinição |
| HTTP 404 | Não encontrado | 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 |
Pode substituir estes valores predefinidos usando o armazenamento em cache negativo para definir um TTL de cache para o código de estado HTTP especificado.
Configurar o armazenamento em cache negativo
O armazenamento em cache negativo permite-lhe configurar o seu serviço para armazenar em cache falhas, bem como sucessos. Isto permite que a RFC proteja as origens de pedidos que geram erros (como 404 Not Found) da mesma forma que protege as origens de pedidos que geram respostas bem-sucedidas.
Consola
- Na Google Cloud consola, aceda à página Equilíbrio de carga.
- Clique no nome do seu Application Load Balancer externo.
- Clique em Editar .
- Em Configuração de back-end, selecione um back-end e clique em Editar .
- Certifique-se de que a opção Ativar RFC está selecionada.
- Na parte inferior da janela, clique em Configurações avançadas.
- Clique em Ativar colocação em cache negativa.
- Clique em Adicionar política de colocação em cache negativa.
- Introduza um código de estado HTTP.
- Selecione um Tempo de vida (TTL) da cache.
- Clique em Atualizar.
- Clique novamente em Atualizar.
gcloud
Para buckets de back-end, use o comando gcloud compute backend-buckets
create ou gcloud compute backend-buckets
update com a flag --negative-caching.
Para serviços de back-end, use o comando gcloud compute backend-services
create ou gcloud compute backend-services
update com a flag --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 as respostas com o código de estado 404 para serem armazenadas em cache durante 60 segundos e as respostas com o código de estado 405 para serem armazenadas em cache durante 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
Para buckets de back-end, use a chamada API Method: backendBuckets.insert ou Method: backendBuckets.update.
Para serviços de back-end, use a chamada da API Method: backendServices.insert ou Method: backendServices.update.
Use uma das seguintes chamadas da 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 seguinte fragmento ao corpo do pedido JSON:
"cdnPolicy": {
"negativeCaching": ON,
"negativeCachingPolicy": [
{
"code": STATUS_CODE,
"ttl": TTL_SECONDS
}
]
}
O armazenamento em cache negativo tem de estar ativado para configurar as definições de negativeCachingPolicy. Se omitir a política e tiver o negativeCaching ativado, o Cloud CDN usa os valores predefinidos indicados em Códigos de estado e TTLs
predefinidos.
Quando especificar uma política de colocação em cache negativa, certifique-se de que especifica um TTL da cache para todos os códigos de resposta que quer colocar em cache. A CDN na nuvem não aplica nenhum armazenamento em cache negativo predefinido quando existe uma política.
Para STATUS_CODE, pode especificar os seguintes códigos de estado HTTP:
300,301,302,307e308404,405,410,421e451501
Para cada código de estado, pode especificar um número de segundos para colocar as respostas em cache. Para desativar o armazenamento em cache negativo para o código de estado, exclua o código da sua política de armazenamento em cache negativo.
O valor máximo permitido é de 1800 segundos (30 minutos); no entanto, os objetos acedidos com pouca frequência podem ser removidos da cache antes do TTL definido.
Quando o modo de cache está definido como CACHE_ALL_STATIC ou USE_ORIGIN_HEADERS, a colocação em cache negativa é aplicada a respostas com o código de resposta especificado que não têm cabeçalhos Cache-Control nem Expires.
Quando o modo de cache está definido como FORCE_CACHE_ALL, a colocação em cache negativa substitui todos os cabeçalhos de colocação em cache definidos pela origem, e a CDN da Google Cloud coloca em cache a resposta durante o período especificado pelo TTL ou não a coloca em cache se não for definido nenhum TTL.
Além disso, quando o modo de cache está definido como FORCE_CACHE_ALL, a CDN na nuvem
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 usa o menor valor entre essa definição de TTL e a definição de configuração, e envia um cabeçalho Cache-Control: public,max-age=N com esse valor.client_ttl Se um determinado erro não tiver uma definição de TTL configurada, o Cloud CDN remove qualquer cabeçalho Cache-Control enviado pela origem. O RFC também remove sempre qualquer cabeçalho Expires enviado pela origem.
Se uma origem tiver o armazenamento em cache negativo inicialmente ativado, mas depois desativado (manualmente ou desativando o armazenamento em cache para um código de resposta específico), as respostas de erro em cache são consideradas válidas apenas com base nos respetivos cabeçalhos Cache-Control ou Expires. Por conseguinte, assim que o armazenamento em cache negativo é desativado, uma resposta sem diretivas de idade de armazenamento em cache nos respetivos cabeçalhos não é publicada a partir da cache.
A RFC de multimédia na nuvem armazena em cache em resposta a pedidos GET. Para mais informações, consulte o artigo
Conteúdo memorizável em cache.
Cada entrada de cache é identificada por uma chave de cache.
Desative a colocação em cache negativa
Consola
- Na Google Cloud consola, aceda à página Equilíbrio de carga.
- Clique no nome do seu Application Load Balancer externo.
- Clique em Editar .
- Em Configuração de back-end, selecione um back-end e clique em Editar .
- Certifique-se de que a opção Ativar RFC está selecionada.
- Na parte inferior da janela, clique em Configurações avançadas.
- Desmarque a caixa de verificação junto a Ativar colocação em cache negativa.
- Clique em Atualizar.
- Clique novamente em Atualizar.
gcloud
Para buckets de back-end, use o comando gcloud compute backend-buckets
create ou gcloud compute backend-buckets
update com a flag --no-negative-caching.
Para serviços de back-end, use o comando gcloud compute backend-services
create ou gcloud compute backend-services
update com a flag --no-negative-caching.
gcloud compute backend-services (create | update) (BACKEND_SERVICE_NAME | BACKEND_BUCKET_NAME)
--no-negative-caching
api
Para buckets de back-end, use a chamada API Method: backendBuckets.insert ou Method: backendBuckets.update.
Para serviços de back-end, use a chamada da API Method: backendServices.insert ou Method: backendServices.update.
Use uma das seguintes chamadas da 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 seguinte fragmento ao corpo do pedido JSON:
"cdnPolicy": {
"negativeCaching": OFF
}