Esta página descreve como alterar as substituições de TTL com a CDN da Google Cloud. As substituições de TTL dão-lhe um controlo detalhado sobre o tempo durante o qual a CDN da nuvem armazena em cache o seu conteúdo antes de o revalidar.
As definições de TTL estão resumidas na tabela seguinte.
TTL predefinido | TTL máximo | TTL do cliente | |
---|---|---|---|
Motivo para configurar | Melhore as taxas de acerto da cache para conteúdo que não se altera com frequência | Forçar a RFC na nuvem a revalidar o conteúdo com mais frequência do que o especificado por um cabeçalho de origem | Forçar os clientes a revalidarem o conteúdo com mais frequência em relação à RFC na nuvem |
Usado quando | Uma das seguintes afirmações é verdadeira para uma resposta bem-sucedida:
|
Todas as seguintes situações são verdadeiras:
|
Uma das seguintes afirmações é verdadeira:
|
Valor predefinido | 3600 segundos (1 hora) | 86 400 segundos (1 dia) | 3600 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) |
Notas | Tem de ser igual ou inferior ao TTL máximo--default-ttl=0 força a revalidação da resposta na origem |
Tem de ser inferior ou igual ao TTL máximo |
Antes de começar
Leia sobre os modos de cache.
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
Defina o TTL predefinido
Para melhorar as taxas de acertos da cache para conteúdo que não muda com frequência, pode substituir o TTL predefinido para que a CDN da Google revalide o conteúdo na origem com menos frequência. Tenha em atenção que os objetos acedidos com pouca frequência podem ser removidos da cache antes do TTL definido.
Quando o modo de cache é FORCE_CACHE_ALL
, o TTL predefinido substitui o TTL definido em todas as respostas (incluindo as que têm um TTL definido por cabeçalhos de origem). Neste modo, o TTL predefinido é visível para os clientes, porque o Cloud CDN define os atributos public
e max-age
das respostas fornecidas aos clientes.
Para o modo CACHE_ALL_STATIC
, o TTL predefinido aplica-se ao conteúdo em cache publicado por uma origem para respostas que não tenham um TTL válido existente (cabeçalho max-age
, s-maxage
ou Expires
). No modo CACHE_ALL_STATIC
, o TTL predefinido
não modifica o cabeçalho Cache-Control
publicado para os clientes. Para modificar o cabeçalho Cache-Control
no modo CACHE_ALL_STATIC
, tem de definir o TTL do cliente.
Quando define o modo de cache para usar cabeçalhos de origem (USE_ORIGIN_HEADERS
), o valor TTL predefinido não se aplica e não pode ser definido porque o Cloud CDN usa a diretiva de origem max-age
ou s-maxage
ou o cabeçalho Expires
em alternativa.
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.
- Certifique-se de que o modo de cache é Conteúdo estático da cache (recomendado) ou Forçar a colocação em cache de todo o conteúdo. A substituição dos valores de TTL não é suportada quando o modo de cache é Usar definições de origem com base nos cabeçalhos Cache-Control.
- Em Tempo de vida predefinido, selecione um valor.
- Clique em Guardar.
gcloud
Para serviços de back-end, use o comando gcloud compute backend-services
create
ou gcloud compute backend-services
update
com a flag --default-ttl
.
Para buckets de back-end, use o comando gcloud compute backend-buckets
create
ou gcloud compute backend-buckets
update
com a flag --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 até 31 622 400 segundos (1 ano).
API
Para contentores de back-end, use a chamada da 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": { "defaultTtl": DEFAULT_TTL }
Substitua DEFAULT_TTL
por um valor até 31 622 400 segundos (1 ano).
Defina o TTL máximo
O TTL máximo especifica o TTL máximo permitido na RFC para conteúdo em cache publicado por uma origem.
O TTL de uma resposta é limitado pelo TTL máximo se uma das seguintes afirmações for verdadeira:
- A resposta tenta definir um
max-age
ou ums-maxage
superior ao valor máximo de TTL. - A resposta tem um cabeçalho
Expires
com mais decdnPolicy.maxTtl
segundos no futuro.
A definição de TTL máximo não altera o valor max-age
enviado para o cliente. Para mais informações, consulte o artigo Substituir o TTL máximo do cliente. A definição de TTL máximo afeta apenas o tempo durante o qual a RFC na nuvem tenta colocar o conteúdo em cache.
Esta definição só é usada quando o modo de cache é CACHE_ALL_STATIC
. O valor máximo permitido é de 31 622 400 segundos (1 ano). Tenha em atenção que os objetos acedidos com pouca frequência podem ser removidos da cache antes do TTL definido.
Com FORCE_CACHE_ALL
, o TTL está sempre definido para o TTL
predefinido. Não pode definir um TTL máximo.
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.
- Certifique-se de que o modo de cache é Conteúdo estático da cache (recomendado).
- Em Tempo máximo de vida, selecione um valor.
- Clique em Guardar.
gcloud
Para serviços de back-end, use o comando gcloud compute backend-services
create
ou gcloud compute backend-services
update
com a flag --max-ttl
.
Para buckets de back-end, use o comando gcloud compute backend-buckets
create
ou gcloud compute backend-buckets
update
com a flag --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 até 31 622 400 segundos (1 ano).
API
Para contentores de back-end, use a chamada da 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": { "maxTtl": MAX_TTL }
Substitua MAX_TTL
por um valor até 31 622 400 segundos (1 ano).
Substitua o TTL do cliente
Para todos os modos de cache, o Cloud CDN transmite os cabeçalhos Cache-Control
ao cliente.
O TTL do cliente permite-lhe definir um TTL máximo para o que é enviado para navegadores ou clientes para que os clientes validem novamente o conteúdo em relação à Cloud CDN com mais frequência, sem exigir a revalidação na origem. Desta forma, o conteúdo pode ser invalidado no RFC quando necessário, e os navegadores podem descobrir que o conteúdo foi invalidado assim que o TTL do cliente expirar.
No modo FORCE_CACHE_ALL
, o Cloud CDN passa normalmente o mesmo max-age
ao cliente que usa internamente para o armazenamento em cache de proxy. No entanto, se for especificado um TTL do cliente e for um valor inferior, o TTL do cliente é passado ao cliente na diretiva max-age
. Da mesma forma, no modo CACHE_ALL_STATIC
, o TTL do cliente serve como um limite para o que quer que seja que max-age
seja especificado pelo servidor de origem, para que o max-age
enviado para o navegador ou o cliente não seja superior ao TTL do cliente configurado. Se a origem não especificar nenhum max-age
, é usado o menor dos valores de TTL do Cloud CDN e do TTL do cliente como o max-age
enviado para o navegador ou o cliente.
Se um cabeçalho Expires
estiver presente na resposta de origem, é removido e
substituído por uma diretiva Cache-Control: max-age
com o TTL adequado.
Para respostas de erro, se não estiver definido nenhum TTL de colocação em cache negativo, o cabeçalho Cache-Control
também é removido.
Uma vez que o TTL do cliente é tratado como um valor máximo para o que é enviado para navegadores ou clientes, não pode ser usado para aumentar o valor max-age
que seria enviado de outra forma. Se o valor max-age
enviado para os navegadores e os clientes
for inferior ao pretendido, tem de aumentar o valor da diretiva max-age
na
resposta devolvida pela origem ou ajustar as definições de TTL predefinido
ou armazenamento em cache negativo adequadamente.
Normalmente, uma definição de TTL do cliente de cerca de um dia é um bom limite superior prático. Uma definição de um dia significa que os navegadores comunicam com essa frequência, no mínimo, e podem saber mais sobre as invalidações da cache que possam ter ocorrido na CDN da Cloud. Pode definir o TTL do cliente como muito superior (até um ano) como forma de permitir que a origem e os TTLs configurados controlem totalmente o que é enviado ao cliente. Isto pode ser útil se não quiser que o navegador faça validações mais frequentes em relação à Cloud CDN.
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.
- Certifique-se de que o modo de cache é Conteúdo estático da cache (recomendado) ou Forçar a colocação em cache de todo o conteúdo. A substituição dos valores de TTL não é suportada quando o modo de cache é Usar definições de origem com base nos cabeçalhos Cache-Control.
- Em Tempo de vida do cliente, selecione um valor até 1 ano.
- Clique em Guardar.
gcloud
Para serviços de back-end, use o comando gcloud compute backend-services
create
ou gcloud compute backend-services
update
com a flag --client-ttl
.
Para buckets de back-end, use o comando gcloud compute backend-buckets
create
ou gcloud compute backend-buckets
update
com a flag --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 até 31 622 400 segundos (1 ano).
API
Para contentores de back-end, use a chamada da 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": { "clientTtl": CLIENT_TTL }
Substitua CLIENT_TTL
por um valor até 31 622 400 segundos (1 ano).
O que se segue?
- Para saber os motivos da publicação de conteúdo desatualizado ou expirado, consulte o artigo Publicar conteúdo desatualizado.