Alterar configurações e substituições de TTL

Nesta página, descrevemos como alterar substituições de TTL com o Cloud CDN. As modificações de TTL oferecem um controle detalhado sobre por quanto tempo o Cloud CDN armazena seu conteúdo em cache antes de revalidar.

As configurações de TTL estão resumidas na tabela a seguir.

  TTL padrão TTL máx. TTL do cliente
Motivo para configuração Melhora as taxas de ocorrência em cache de conteúdo que não muda com frequência Força o Cloud CDN a revalidar conteúdo com mais frequência do que o especificado por um cabeçalho de origem Força os clientes a revalidar conteúdo com uma frequência maior que a do Cloud CDN
Usado quando Para uma resposta bem-sucedida, uma das opções a seguir é verdadeira:
  • Modo cache = FORCE_CACHE_ALL
  • Modo cache = CACHE_ALL_STATIC, o tipo de conteúdo é armazenável em cache estaticamente, e um TTL não é definido pelos cabeçalhos de origem (max-age, s-maxage ou Expires)
Todas as afirmações a seguir são verdadeiras:
  • Modo cache = CACHE_ALL_STATIC
  • Um TTL é definido por cabeçalhos de origem (max-age, s-maxage ou Expires)
  • O TTL especificado no cabeçalho de origem é maior que o valor máximo de TTL
Uma das seguintes opções é verdadeira:
  • modo de cache = FORCE_CACHE_ALL, e o valor de TTL do cliente é menor que o TTL do Cloud CDN
  • Modo cache = CACHE_ALL_STATIC, e o TTL do cliente é menor que o TTL definido pelo cabeçalho de origem (ou TTL padrão se não houver informações sobre o cabeçalho de origem)
Valor padrão 3.600 segundos (1 hora) 86.400 segundos (1 dia) 3.600 segundos (1 hora)
Valor máximo permitido 31.622.400 segundos (1 ano) 31.622.400 segundos (1 ano) 31.622.400 segundos (1 ano)
Observações Precisa ser menor ou igual ao TTL máximo

--default-ttl=0
força a resposta a ser revalidada na origem
Precisa ser menor ou igual ao TTL máximo

Antes de começar

  • Leia sobre os modos de cache.

  • 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
    

Definir o TTL padrão

Se quiser melhorar as taxas de ocorrência em cache de um conteúdo que não muda com frequência, é possível substituir o TTL padrão para que o Cloud CDN revalide o conteúdo na origem com menos frequência. Os objetos acessados com pouca frequência podem ser removidos do cache antes do TTL definido.

Quando o modo de cache é FORCE_CACHE_ALL, o TTL padrão substitui o TTL definido em todas as respostas, incluindo aquelas que têm um TTL definido pelos cabeçalhos de origem. Nesse modo, o TTL padrão fica visível para os clientes, porque o Cloud CDN define os atributos public e max-age das respostas exibidas aos clientes.

No modo CACHE_ALL_STATIC, o TTL padrão se aplica ao conteúdo em cache exibido por uma origem para respostas que não têm um TTL válido (cabeçalhos max-age, s-maxage ou Expires). No modo CACHE_ALL_STATIC, o TTL padrão não modifica o cabeçalho Cache-Control exibido aos clientes. Para modificar o cabeçalho Cache-Control no modo CACHE_ALL_STATIC, defina o TTL do cliente.

Quando você define o modo de cache para usar cabeçalhos de origem (USE_ORIGIN_HEADERS), o valor TTL padrão não se aplica e não pode ser configurado porque o Cloud CDN usa as diretivas de origem max-age ou s-maxage ou o cabeçalho Expires.

Console

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

    Acessar o "Balanceamento de carga"

  2. Clique no nome do seu balanceador de carga de aplicativo 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. Verifique se o modo de cache é Armazenar conteúdo estático em cache (recomendado) ou Forçar cache em todo o conteúdo. A substituição dos valores de TTL não é compatível quando o modo de cache é Usar configurações de origem baseadas em cabeçalhos de controle de cache.
  7. Em Tempo de vida padrão, selecione um valor.
  8. 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 --default-ttl.

Para buckets de back-end, use o comando gcloud compute backend-buckets create ou gcloud compute backend-buckets update com a sinalização --default-ttl.

gcloud compute backend-services (create | update) BACKEND_SERVICE_NAME
    --default-ttl=DEFAULT_TTL
gcloud compute backend-buckets (create | update) BACKEND_BUCKET_NAME
    --default-ttl=DEFAULT_TTL

Substitua DEFAULT_TTL por um valor de até 31.622.400 segundos (1 ano).

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": {
  "defaultTtl": DEFAULT_TTL
}

Substitua DEFAULT_TTL por um valor de até 31.622.400 segundos (1 ano).

Definir o TTL máximo

O TTL máximo (máximo) especifica o TTL máximo permitido dentro do Cloud CDN para o conteúdo armazenado em cache exibido por uma origem.

O TTL de uma resposta será limitado pelo TTL máximo. se uma das seguintes condições for verdadeira:

  • A resposta tenta definir um max-age ou s-maxage superior ao valor máximo de TTL.
  • A resposta tem um cabeçalho Expires com mais de cdnPolicy.maxTtl segundos no futuro.

A configuração de TTL máximo não altera o valor max-age enviado ao cliente. Para mais informações, consulte Como substituir o TTL máximo do cliente. A configuração de TTL máximo afeta apenas o tempo que o Cloud CDN tenta armazenar em cache o conteúdo.

Essa configuração é usada apenas quando o modo cache é CACHE_ALL_STATIC. O valor máximo permitido é de 31.622.400 segundos (1 ano). Os objetos acessados com pouca frequência podem ser removidos do cache antes do TTL definido.

Com FORCE_CACHE_ALL, o TTL é sempre definido como o TTL padrão; não é possível definir um TTL máximo.

Console

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

    Acessar o "Balanceamento de carga"

  2. Clique no nome do seu balanceador de carga de aplicativo 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. Verifique se o modo de cache é Armazenar conteúdo estático em cache (recomendado).
  7. Em Tempo máximo para viver, selecione um valor.
  8. 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 --max-ttl.

Para buckets de back-end, use o comando gcloud compute backend-buckets create ou gcloud compute backend-buckets update com a sinalização --max-ttl.

gcloud compute backend-services (create | update) BACKEND_SERVICE_NAME
    --max-ttl=MAX_TTL
gcloud compute backend-buckets (create | update) BACKEND_BUCKET_NAME
    --max-ttl=MAX_TTL

Substitua MAX_TTL por um valor de até 31.622.400 segundos (1 ano).

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": {
  "maxTtl": MAX_TTL
}

Substitua MAX_TTL por um valor de até 31.622.400 segundos (1 ano).

Substituir o TTL do cliente

Para todos os modos de cache, o Cloud CDN transmite cabeçalhos Cache-Control para o cliente.

O TTL do cliente permite que você defina um TTL máximo para o que é enviado a navegadores ou clientes, para que os clientes revalidem o conteúdo com o Cloud CDN com mais frequência, sem exigir revalidação na origem. Dessa forma, o conteúdo pode ficar inválido no Cloud CDN quando necessário, e os navegadores podem descobrir que o conteúdo é invalidado assim que o TTL do cliente expira.

No modo FORCE_CACHE_ALL, o Cloud CDN normalmente transmite o mesmo max-age ao cliente que é usado internamente para o armazenamento em cache do proxy. No entanto, se o TTL de um cliente for especificado e for um valor menor, o TTL do cliente será transmitido ao cliente na diretiva max-age. Da mesma forma, no modo CACHE_ALL_STATIC, o TTL do cliente atua como uma base para qualquer max-age especificado pelo servidor de origem para que a max-age enviada ao navegador ou ao cliente não seja maior que o TTL configurado do cliente. Se nenhuma max-age for especificada pela origem, o menor valor de TTL do Cloud CDN e do cliente é usado como a max-age enviada ao navegador ou cliente.

Se um cabeçalho Expires estiver presente na resposta de origem, ele será removido e substituído por uma diretiva Cache-Control: max-age com o TTL adequado. Para respostas de erro, se nenhum TTL de armazenamento em cache negativo for definido, o cabeçalho Cache-Control também é removido.

Como o TTL do cliente é tratado como um valor máximo para o que é enviado a navegadores ou clientes, não é possível usá-lo para aumentar o valor max-age que, de outra forma, seria enviado. Se o valor de max-age enviado aos navegadores e clientes for menor que o pretendido, aumente o valor da diretiva max-age na resposta retornada pela origem ou ajuste as configurações do TTL padrão ou armazenamento em cache negativo.

Normalmente, uma configuração de TTL do cliente de cerca de um dia é um bom limite superior prático. Uma configuração de um dia significa que os navegadores fazem check-in com pelo menos essa frequência e podem saber mais sobre invalidações de cache que podem ter ocorrido no Cloud CDN. É possível definir o TTL do cliente muito mais alto (até um ano) como uma maneira de permitir a origem e o TTL configurado para controlar totalmente o que é enviado ao cliente. Isso pode ser útil se você não quiser que o navegador realize validações mais frequentes no Cloud CDN.

Console

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

    Acessar o "Balanceamento de carga"

  2. Clique no nome do seu balanceador de carga de aplicativo 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. Verifique se o modo de cache é Armazenar conteúdo estático em cache (recomendado) ou Forçar cache em todo o conteúdo. A substituição dos valores de TTL não é compatível quando o modo de cache é Usar configurações de origem baseadas em cabeçalhos de controle de cache.
  7. Em Tempo de vida do cliente, selecione um valor de até um ano.
  8. 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 --client-ttl.

Para buckets de back-end, use o comando gcloud compute backend-buckets create ou gcloud compute backend-buckets update com a sinalização --client-ttl.

gcloud compute backend-services (create | update) BACKEND_SERVICE_NAME
    --client-ttl=CLIENT_TTL
gcloud compute backend-buckets (create | update) BACKEND_BUCKET_NAME
    --client-ttl=CLIENT_TTL

Substitua CLIENT_TTL por um valor de até 31.622.400 segundos (1 ano).

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": {
  "clientTtl": CLIENT_TTL
}

Substitua CLIENT_TTL por um valor de até 31.622.400 segundos (1 ano).

A seguir