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_ALLsubstitui 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çãogcloud --signed-url-cache-max-age.FORCE_CACHE_ALLaltera 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_ALLsubstitui as diretivas de cache (Cache-ControleExpires), mas não substitui outros cabeçalhos de resposta de origem. Em particular, um cabeçalhoVarypode suprimir o armazenamento em cache, mesmo que o modo de cache sejaFORCE_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-Typepara cada resposta. Muitos servidores Web definem automaticamente o cabeçalhoContent-Type, incluindo o NGINX, o Varnish e o Apache.O Cloud Storage define o cabeçalho
Content-Typeautomaticamente 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-Controlao 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 modoFORCE_CACHE_ALLpara substituir os valores enviados pelo Cloud Storage.Se quiser colocar em cache os tipos de conteúdo
text/htmleapplication/json, tem de definir cabeçalhos explícitosCache-Controlna 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 |
|
| Atualidade | A resposta
tem um cabeçalho Para respostas memorizáveis em cache sem idade (por exemplo, com
Com o modo de cache Com o modo de cache 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 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:
Torne o seu contentor publicamente legível. Esta é a abordagem que recomendamos para conteúdo público. Com esta definição, qualquer pessoa na Internet pode ver e listar os seus objetos e os respetivos metadados, excluindo as ACLs. A prática recomendada é dedicar contentores específicos a objetos públicos.
Use pastas geridas para tornar uma parte do seu contentor publicamente legível.
Torne os objetos individuais publicamente legíveis. Não recomendamos esta abordagem, porque usa um sistema de autorizações específico do Cloud Storage antigo.
Não armazene o objeto num contentor com a opção O requerente paga ativada ou que resida num perímetro de serviço da nuvem virtual privada.
Não encriptar o objeto com chaves de encriptação geridas pelo cliente nem chaves de encriptação fornecidas pelo cliente.
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.