Nesta página, fornecemos instruções para mudar os modos de cache com o Cloud CDN. Os modos de cache permitem configurar como o Cloud CDN armazena seu conteúdo em cache.
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
Como definir o modo de cache
O Cloud CDN oferece três modos de cache, que definem como as respostas serão armazenadas em cache, se o Cloud CDN vai respeitar as diretivas de cache enviadas pela origem e como os TTLs do cache serão aplicados.
Os modos de cache disponíveis são mostrados na tabela a seguir:
Modo cache | Comportamento |
---|---|
CACHE_ALL_STATIC |
Armazena respostas bem-sucedidas em cache automaticamente com
conteúdo estático que não podem ser
armazenadas em cache.
As respostas de origem que definem diretivas de armazenamento em cache válidas também são armazenadas em cache. Esse é o comportamento padrão para os back-ends compatíveis com o Cloud CDN criados usando a CLI do Google Cloud ou a API REST. |
USE_ORIGIN_HEADERS |
Requer respostas de origem bem-sucedidas para definir diretivas de cache e cabeçalhos de cache válidos. As respostas bem-sucedidas sem essas diretivas
são encaminhadas da origem. |
FORCE_CACHE_ALL |
Armazena incondicionalmente as respostas em cache, substituindo as diretivas de cache definidas pela origem. Esse modo não é apropriado se o back-end veicular conteúdo particular por usuário, como HTML dinâmico ou respostas da API. |
As respostas de erro podem ser armazenadas em cache, mesmo na ausência de diretivas de cache válidas.
Antes de definir o modo de cache como FORCE_CACHE_ALL
, considere os seguintes
comportamentos:
Para URLs ou cookies assinados, o
FORCE_CACHE_ALL
substitui a idade máxima especificada por meio da configuração de idade máxima da entrada de cache no Console do Google Cloud ou na opçãogcloud --signed-url-cache-max-age
.O
FORCE_CACHE_ALL
muda o time to live (TTL) de qualquer conteúdo armazenado em cache anteriormente. Essa alteração pode fazer com que algumas entradas que foram consideradas anteriormente atualizadas (devido ao uso de TTLs mais longos nos cabeçalhos de origem) sejam consideradas desatualizadas e fazer com que algumas entradas que antes eram consideradas desatualizadas sejam consideradas recentes. de dados.O
FORCE_CACHE_ALL
substitui as diretivas de cache (Cache-Control
eExpires
), mas não modifica outros cabeçalhos de resposta de origem. Em particular, um cabeçalhoVary
ainda é respeitado e pode suprimir o armazenamento em cache, mesmo na presença deFORCE_CACHE_ALL
. Para mais informações, consulte os cabeçalhos Vary.
Para configurar os modos de cache para um back-end ativado para o Cloud CDN:
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.
- Em Modo de cache, selecione uma das seguintes opções:
- Armazene em cache o conteúdo estático (recomendado): são recursos da Web que não são alterados para cada usuário. O conteúdo estático é baseado no
Content-Type
na resposta. Para mais informações, consulte conteúdo estático. - Use as configurações de origem com base nos cabeçalhos de controle de cache: respostas de cache com diretivas de cache válidas nos cabeçalhos de resposta.
- Forçar cache de todo o conteúdo: armazene em cache todo o conteúdo veiculado
pela origem, ignorando todas as diretivas
private
ouno-store
.
- Armazene em cache o conteúdo estático (recomendado): são recursos da Web que não são alterados para cada usuário. O conteúdo estático é baseado no
- Clique em Save.
gcloud
Para serviços de back-end, use o comando gcloud compute backend-services
create
ou gcloud compute backend-services
update
com a sinalização --cache-mode
.
Para buckets de back-end, use o comando gcloud compute backend-buckets
create
ou gcloud compute backend-buckets
update
com a sinalização --cache-mode
.
gcloud compute backend-services (create | update) BACKEND_SERVICE_NAME --cache-mode=CACHE_MODE
gcloud compute backend-buckets (create | update) BACKEND_BUCKET_NAME --cache-mode=CACHE_MODE
Substitua CACHE_MODE
por um dos seguintes:
CACHE_ALL_STATIC
(padrão): armazena automaticamente o conteúdo estático em cache. As respostas marcadas como não armazenáveis em cache (as diretivasprivate
ouno-store
nos cabeçalhos de respostaCache-Control
) não são armazenadas. O conteúdo dinâmico precisa ter cabeçalhos de cache válidos para ser armazenado em cache.USE_ORIGIN_HEADERS
: exige a origem para definir cabeçalhos de cache válidos a fim de armazenar conteúdo em cache. As respostas sem esses cabeçalhos não são armazenadas em cache na borda do Google e exigem uma viagem completa à origem em todas as solicitações, o que pode afetar o desempenho e aumentar a carga no servidor de origem.FORCE_CACHE_ALL
: armazena em cache todo o conteúdo (ou seja, respostas bem-sucedidas), ignorando as diretivasprivate
ouno-store
nos cabeçalhos de respostaCache-Control
. Isso pode resultar no armazenamento em cache de conteúdo particular por usuário (identificação de usuários). Ative a função somente em back-ends que não exibem conteúdo particular ou dinâmico, como buckets do Cloud Storage. Não ative em back-ends que estejam veiculando conteúdo privado ou dinâmico.
API
Para buckets de back-end, use a chamada de API Method: backendBuckets.insert
ou Method: backendBuckets.update
.
Para 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 seguinte snippet ao corpo da solicitação JSON:
"cdnPolicy": { "cacheMode": (CACHE_ALL_STATIC | USE_ORIGIN_HEADERS | FORCE_CACHE_ALL)
Substitua CACHE_MODE
por um dos seguintes:
CACHE_ALL_STATIC
(padrão): armazena em cache o conteúdo estático automaticamente caso a origem não defina cabeçalhos de cache válidos. As respostas marcadas como não armazenáveis em cache (as diretivasprivate
ouno-store
nos cabeçalhos de respostaCache-Control
) não são armazenadas. Para armazenar conteúdo dinâmico em cache, o conteúdo precisa ter cabeçalhos de cache válidos.USE_ORIGIN_HEADERS
: exige a origem para definir cabeçalhos de cache válidos a fim de armazenar conteúdo em cache. As respostas sem esses cabeçalhos não são armazenadas em cache na borda do Google e exigem uma viagem completa à origem em todas as solicitações, o que pode afetar o desempenho e aumentar a carga no servidor de origem.FORCE_CACHE_ALL
: armazena em cache todo o conteúdo (ou seja, respostas bem-sucedidas), ignorando as diretivasprivate
ouno-store
nos cabeçalhos de respostaCache-Control
. Isso pode resultar no armazenamento em cache de conteúdo particular por usuário (identificação de usuários). Ative a função somente em back-ends que não exibem conteúdo particular ou dinâmico, como buckets do Cloud Storage.