Como usar modos de cache

Nesta página, fornecemos instruções para usar 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 pode ser armazenado 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ção gcloud --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 e Expires), mas não modifica outros cabeçalhos de resposta de origem. Em particular, um cabeçalho Vary ainda é respeitado e pode suprimir o armazenamento em cache, mesmo na presença de FORCE_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

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

    Acessar a página "Balanceamento de carga"

  2. Clique no nome do balanceador de carga HTTP(S) 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. 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 ou no-store.
  7. 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 diretivas private ou no-store nos cabeçalhos de resposta Cache-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 diretivas private ou no-store nos cabeçalhos de resposta Cache-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 automaticamente o conteúdo estático em cache. As respostas marcadas como não armazenáveis em cache (as diretivas private ou no-store nos cabeçalhos de resposta Cache-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 diretivas private ou no-store nos cabeçalhos de resposta Cache-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.