Vista geral da colocação em cache

Uma resposta armazenável em cache é uma resposta HTTP que a RFC do Google Cloud pode armazenar e obter rapidamente, o que permite tempos de carregamento mais rápidos. Nem todas as respostas HTTP são colocáveis em cache.

Modos de cache

Com os modos de cache, pode controlar os fatores que determinam se a RFC armazena em cache o seu conteúdo.

A RFC de nuvem oferece três modos de cache, que definem como as respostas são colocadas em cache, se a RFC de nuvem respeita as diretivas de cache enviadas pela origem e como os TTLs de cache são aplicados.

Os modos de cache disponíveis são apresentados na tabela seguinte:

Modo de cache Comportamento
CACHE_ALL_STATIC Coloca automaticamente em cache as respostas bem-sucedidas com conteúdo estático que, de outra forma, não seria colocado em cache. As respostas de origem que definem diretivas de colocação em cache válidas também são colocadas em cache.

Este comportamento é o predefinido para back-ends ativados para a Cloud CDN criados através da Google Cloud CLI ou da API REST.

USE_ORIGIN_HEADERS Requer respostas de origem bem-sucedidas para definir diretivas de cache válidas e cabeçalhos de cache válidos. As respostas bem-sucedidas sem estas diretivas são encaminhadas a partir da origem.
FORCE_CACHE_ALL Coloca em cache incondicionalmente as respostas bem-sucedidas, substituindo quaisquer diretivas de cache definidas pela origem. Este modo não é adequado se o back-end servir conteúdo privado por utilizador (identificável pelo utilizador), como HTML dinâmico ou respostas da API.

As respostas de erro podem ser colocadas 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 assinados ou cookies assinados, FORCE_CACHE_ALL substitui a duração máxima especificada através da definição Duração máxima da entrada na cache na Google Cloud consola ou na opção gcloud --signed-url-cache-max-age.

  • FORCE_CACHE_ALL altera o tempo de vida (TTL) de qualquer conteúdo armazenado em cache anteriormente. Esta alteração pode fazer com que algumas entradas que eram consideradas atualizadas (devido a terem TTLs mais longos dos cabeçalhos de origem) sejam consideradas desatualizadas e pode fazer com que algumas entradas que eram consideradas desatualizadas sejam consideradas atualizadas.

  • FORCE_CACHE_ALL substitui as diretivas de cache (Cache-Control e Expires), mas não substitui outros cabeçalhos de resposta de origem. Em particular, um cabeçalho Vary pode suprimir o armazenamento em cache, mesmo que o modo de cache seja FORCE_CACHE_ALL. Para mais informações, consulte o artigo Cabeçalhos Vary.

Para ver instruções de configuração, consulte o artigo Definir o modo de cache.

Conteúdo estático

O conteúdo estático é conteúdo que é sempre o mesmo, mesmo quando acedido por diferentes utilizadores. Normalmente, o CSS que usa para aplicar estilos ao seu site, o JavaScript para fornecer interatividade, o conteúdo de vídeo e de imagem não se alteram para cada utilizador para um determinado URL (chave de cache) e, por isso, beneficiam da colocação em cache na rede de limite global da Cloud CDN.

Quando define o modo de cache como CACHE_ALL_STATIC e uma resposta não tem diretivas de colocação em cache explícitas nos cabeçalhos Cache-Control ou Expires, o Cloud CDN coloca automaticamente essa resposta em cache para o seguinte:

  • Recursos Web, incluindo CSS (text/css), JavaScript (application/javascript) e todas as carateres Web, incluindo WOFF2 (font/woff2)
  • Imagens, incluindo JPEG (image/jpg) e PNG (image/png)
  • Vídeos, incluindo H.264, H.265 e MP4 (video/mp4)
  • Ficheiros de áudio, incluindo MP3 (audio/mpeg) e MP4 (audio/mp4)
  • Documentos formatados, incluindo PDF (application/pdf)

A tabela seguinte apresenta um resumo.

Categoria Tipos MIME
Recursos Web text/css text/ecmascript text/javascript application/javascript
Tipos de letra Qualquer Content-Type que corresponda a font/*
Imagens Qualquer Content-Type que corresponda a image/*
Vídeos Qualquer Content-Type que corresponda a video/*
Áudio Qualquer Content-Type que corresponda a audio/*
Tipos de documentos formatados application/pdf e application/postscript

A RFC na nuvem inspeciona o cabeçalho da resposta HTTP, que reflete o tipo MIME do conteúdo publicado.Content-Type

Tenha em conta o seguinte:

  • O software do servidor Web da sua origem tem de definir o Content-Type para cada resposta. Muitos servidores Web definem automaticamente o cabeçalho Content-Type, incluindo o NGINX, o Varnish e o Apache.

  • O Cloud Storage define o cabeçalho Content-Type automaticamente quando usa a Google Cloud consola ou a CLI do Google Cloud para carregar conteúdo.

  • O Cloud Storage fornece sempre um cabeçalho Cache-Control ao Cloud CDN. Se não for escolhido explicitamente nenhum valor, envia um valor predefinido. Como resultado, todas as respostas bem-sucedidas do Cloud Storage são colocadas em cache de acordo com os valores predefinidos do Cloud Storage, a menos que ajuste explicitamente os metadados de controlo da cache para objetos no Cloud Storage ou use o modo FORCE_CACHE_ALL para substituir os valores enviados pelo Cloud Storage.

  • Se quiser colocar em cache os tipos de conteúdo text/html e application/json, tem de definir cabeçalhos explícitos Cache-Control na resposta, tendo cuidado para não colocar acidentalmente em cache os dados de um utilizador e disponibilizá-los a todos os utilizadores.

Se uma resposta for armazenável em cache com base no respetivo tipo MIME, mas tiver um cabeçalho de resposta Cache-Control de private ou no-store, ou um cabeçalho Set-Cookie , não é armazenada em cache. Para saber mais, consulte as regras de capacidade de colocação em cache.

Outros tipos de conteúdo, como HTML (text/html) e JSON (application/json), não são colocados em cache por predefinição para respostas bem-sucedidas. Estes tipos de respostas são normalmente dinâmicos (por utilizador). Os exemplos incluem carrinhos de compras, páginas de produtos com personalização do utilizador e respostas de API autenticadas. No entanto, se a colocação em cache negativa estiver ativada, pode continuar a fazer com que sejam colocadas em cache para determinados códigos de estado.

A CDN da nuvem não usa extensões de ficheiros no caminho do URL para determinar se uma resposta é armazenável em cache, porque muitas respostas armazenáveis em cache válidas não se refletem nos URLs.

Conteúdo armazenável em cache

A RFC de multimédia na nuvem coloca em cache as respostas que cumprem todos os requisitos nesta secção. Alguns destes requisitos são especificados pela RFC 7234 e outros são específicos da RFC.

A CDN na nuvem pode alterar periodicamente o conjunto exato de condições sob as quais armazena conteúdo em cache. Se quiser impedir explicitamente que a CDN da nuvem armazene em cache o seu conteúdo, siga as diretrizes na RFC 7234 para determinar como especificar uma resposta garantidamente não armazenável em cache. Consulte também a secção Conteúdo não armazenável em cache com base nos cabeçalhos de origem.

O Cloud CDN armazena as respostas na cache se todas as seguintes condições forem verdadeiras.

Atributo Requisito
Apresentado por Serviço de back-end, contentor de back-end ou um back-end externo com o Cloud CDN ativado
Em resposta a GET pedido
Código de estado

200, 203, 204, 206, 300, 301, 302, 307, 308, 404, 405, 410, 421, 451 ou 501.

Atualidade

A resposta tem um cabeçalho Cache-Control com uma diretiva max-age ou s-maxage, ou um cabeçalho Expires com uma data/hora no futuro.

Para respostas memorizáveis em cache sem idade (por exemplo, com no-cache), a diretiva public tem de ser fornecida explicitamente.

Com o modo de cache CACHE_ALL_STATIC, se não estiverem presentes diretivas de atualização, uma resposta bem-sucedida com o tipo de conteúdo estático continua a ser elegível para colocação em cache.

Com o modo de cache FORCE_CACHE_ALL, qualquer resposta bem-sucedida é elegível para colocação em cache. Isto pode resultar na colocação em cache de conteúdo privado por utilizador. Só deve definir FORCE_CACHE_ALL em back-ends que não estejam a publicar conteúdo privado ou dinâmico, como contentores do Cloud Storage.

Se o armazenamento em cache negativo estiver ativado e o código de estado corresponder a um para o qual o armazenamento em cache negativo especifica um TTL, a resposta é elegível para o armazenamento em cache, mesmo sem diretivas de atualização explícitas.

Conteúdo

Para origens HTTP/1, a resposta tem de conter um cabeçalho Content-Length, Content-Range ou Transfer-Encoding: chunked válido.

Para origens que usam versões mais avançadas do protocolo HTTP (HTTP/2 e posteriormente), a resposta não precisa de ter esses cabeçalhos.

Tamanho Inferior ou igual ao tamanho máximo.

Para respostas com tamanhos entre 10 MiB e 100 GiB, consulte as restrições de capacidade de colocação em cache adicionais descritas nos pedidos de intervalo de bytes.

Para contentores de back-end do Cloud Storage, siga estas sugestões adicionais:

Por predefinição, quando um objeto é público e não especifica metadados, o Cloud Storage atribui um cabeçalho Cache-Control: public, max-age=3600 ao objeto.Cache-Control Pode definir valores diferentes através de metadados Cache-Control.

Para ver um exemplo que mostra como configurar um balanceador de carga de aplicações externo com um contentor de back-end, consulte o artigo Configurar o Cloud CDN com um contentor de back-end.

Tamanho máximo

A CDN da nuvem aplica um tamanho máximo a cada resposta. Qualquer resposta com um corpo superior ao tamanho máximo não é colocada em cache, mas é entregue ao cliente.

O tamanho máximo varia consoante o servidor de origem suportar pedidos de intervalo de bytes.