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 do SDK do 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 automaticamente o conteúdo estático que não tem a diretiva no-store ou private. 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 back-ends ativados para o Cloud CDN criados com a ferramenta de linha de comando gcloud ou a API REST.

USE_ORIGIN_HEADERS Requer respostas de origem para definir diretivas de cache e cabeçalhos de cache válidos. As respostas 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.

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.