Nesta página, você encontrará as práticas recomendadas para otimizar e acelerar o fornecimento de conteúdo com o Cloud CDN. As seções são divididas em várias áreas principais.
O Cloud CDN usa um balanceador de carga de aplicativo externo como a origem de conteúdos armazenáveis em cache. Um balanceador de carga de aplicativo externo pode fornecer uma combinação de conteúdo estático e dinamicamente criado para os usuários por meio de um endereço IP global dos seguintes tipos de back-end:
- Grupos de instâncias
- Grupos de endpoints de rede (NEGs) zonais
- NEGs sem servidor: um ou mais serviços do App Engine, do Cloud Run ou do Cloud Functions.
- NEGs da Internet para back-ends externos
- Buckets no Cloud Storage
Devido à integração perfeita com o Google Cloud, há várias opções para implantar o Cloud CDN e gerenciar conteúdo. Use as práticas recomendadas listadas aqui para planejar e refinar sua implantação. Para mais informações, consulte Configurar o Cloud CDN.
Otimizar a proporção de ocorrência em cache
As práticas recomendadas a seguir ajudam a otimizar a proporção de ocorrência em cache.
Armazenar em cache o conteúdo estático
Como prática recomendada para melhorar o desempenho, ao ativar o Cloud CDN, é preciso escolher o modo de cache correto para o aplicativo.
O método mais flexível e geralmente preferido para gerenciar regras de cache é usar o cabeçalho de controle de cache. Se você não conhecer bem o uso de cabeçalhos de controle de cache de origem, a prática recomendada é permitir que o Cloud CDN armazene automaticamente conteúdo estático em cache.
Para armazenar automaticamente respostas estáticas da sua origem, use a configuração --cache-mode=CACHE_ALL_STATIC
(padrão). Essa configuração permite
que o Cloud CDN armazene em cache os tipos de conteúdo estático
comuns quando a origem não especifica
diretivas de armazenamento em cache nos cabeçalhos de resposta. Verifique se o conteúdo corresponde às
categorias descritas. Caso contrário, ele não será armazenado em cache.
Não armazene em cache conteúdo específico do usuário
Em alguns casos, os navegadores podem armazenar em cache conteúdo específico do usuário. Não use o Cloud CDN para armazenar em cache conteúdo específico do usuário.
Usar chaves de cache personalizadas para melhorar a proporção de ocorrência em cache
Para desempenho e escalabilidade, é importante otimizar a proporção de ocorrência em cache. Por padrão, o Cloud CDN usa o URL de solicitação completo para criar a chave de cache. Para ajudar a otimizar essa proporção, use as chaves de cache personalizadas para que o Cloud CDN não fragmente o cache desnecessariamente.
As chaves de cache personalizadas permitem que você inclua ou omita qualquer combinação de protocolo, host e string de consulta. Veja a seguir alguns exemplos de quando usar chaves de cache personalizadas:
Você tem dois hosts resolvidos para o mesmo endereço IP e acessando o mesmo serviço. Neste exemplo, todo o site é o mesmo nos dois hosts. Por padrão, o Cloud CDN armazena em cache duas cópias devido ao diferente cabeçalho
Host:
nas solicitações HTTP. Com uma chave de cache personalizada, é possível fazer com que o Cloud CDN ignore a parte do host da solicitação e compartilhe as entradas do cache.Em um exemplo mais específico, é possível ter dois sites em domínios diferentes que usam o mesmo logotipo. O conteúdo do site é diferente, mas você usa o mesmo logotipo de empresa nos dois domínios e tem um serviço de back-end dedicado que contém conteúdo compartilhado. Ao ativar o Cloud CDN e personalizar as chaves de cache do serviço de back-end que detém o logotipo, desmarque a caixa de seleção Host para que o cache ignore o domínio, mas armazene o logotipo.
Seja exibido por meio de HTTP ou de HTTPS, o logotipo precisa estar armazenado em cache. Ao personalizar as chaves de cache para o serviço de back-end que detém o logotipo, limpe a caixa de seleção Protocolo para que as solicitações por meio de HTTP e HTTPS contem como correspondências para a entrada de cache do logotipo.
Para saber como personalizar as chaves de cache, consulte Como usar chaves de cache.
Otimizar o desempenho
As práticas recomendadas a seguir ajudam a otimizar o desempenho.
Verificar se o suporte ao protocolo HTTP/3 e QUIC está ativado
O HTTP/3 é um protocolo de Internet de última geração. Ele é baseado no QUIC, um protocolo desenvolvido a partir do protocolo Google QUIC (gQUIC) original. O HTTP/3 é compatível entre o balanceador de carga HTTP(S) externo, o Cloud CDN e os clientes.
Para aumentar o desempenho com o Cloud CDN, verifique se o HTTP/3 está ativado.
Usar armazenamento em cache negativo
O armazenamento em cache negativo fornece controle detalhado do armazenamento em cache para erros ou redirecionamentos comuns. Quando o Cloud CDN encontra códigos de resposta específicos, ele mantém essa resposta no cache para um TTL definido. Isso diminui a latência da resposta, o que possibilita reduzir a carga nas origens e melhorar a experiência do usuário final.
Otimizar a segurança
As práticas recomendadas a seguir ajudam a otimizar a segurança.
Usar o Google Cloud Armor
O Google Cloud Armor se integra ao Cloud CDN para conteúdo em cache e sem cache. Uma prática recomendada é usar o Google Cloud Armor em conjunto com o Cloud CDN sempre que possível para aumentar a segurança dos aplicativos da Web.
Usar URLs assinados
Se você estiver usando URLs assinados, observe o seguinte:
Mantenha conteúdo público e privado em buckets separados do Cloud Storage.
Seguir as práticas recomendadas de segurança.
Autenticar origens particulares
A autenticação de origem oferece uma forte garantia de que a solicitação vem apenas do seu próprio serviço de back-end configurado. Ela também oferece proteção de dados em trânsito para a solicitação e protege contra a reutilização da parte assinada da solicitação.
Recomendamos o uso da autenticação de origem particular para buckets do Amazon S3 ou armazenamentos de objetos compatíveis. A autenticação de origem particular ajuda a garantir que apenas conexões confiáveis acessem o conteúdo nas origens particulares e que os usuários não as acessem diretamente.
Além disso, se os firewalls de origem impedirem o acesso à origem, use a lista de permissões de IP para garantir que a solicitação seja proveniente do Cloud CDN ou do balanceador de carga de aplicativo externo. No entanto, isso não impede que outros clientes do Media CDN tentem acessar seu conteúdo especificando sua origem na configuração.
Otimizar o cache
As práticas recomendadas a seguir ajudam a otimizar o cache.
Otimizar TTLs de cache
É possível definir ou modificar os TTLs para ajustar o tempo que o Cloud CDN armazena em cache suas respostas e quando o Cloud CDN revalida suas respostas.
Também é possível definir um TTL voltado para o cliente para aproveitar ao máximo o processo de cache do navegador
Para mais informações, consulte Como usar configurações e modificações de TTL.
Definir a expiração de conteúdo temporário
Cada conteúdo de um cache do Cloud CDN tem um intervalo de expiração específico, e é importante definir um intervalo adequado para seu caso de uso. Você precisa escolher a expiração com cuidado, já que os servidores de origem reenviam o conteúdo que expira nos servidores de cache.
Uma maneira de escolher a expiração é classificar o conteúdo com base na frequência com que você o atualiza, por exemplo:
- Atualizações quase em tempo real, como feeds ao vivo de eventos esportivos ou tráfego
- Atualizações frequentes, como informações meteorológicas semanais, diárias ou por hora, ou imagens de notícias de primeira página.
- Atualizações não frequentes, como um logotipo de um site ou arquivos CSS ou JavaScript.
Em seguida, escolha a expiração por categoria de conteúdo. Por exemplo, um intervalo de expiração de cinco segundos pode ser ideal para placares de jogos quase em tempo real. Já um intervalo de expiração de uma hora pode ser usado para atualizações meteorológicas. Para o conteúdo armazenado no
Cloud Storage, defina os prazos de validade usando os
metadados Cache-Control
.
Quando o conteúdo é exibido pelo Compute Engine, é possível controlar os prazos de validade por meio da configuração do software de servidor da Web.
Os prazos de validade são especificados pelos valores max-age
e s-maxage
no cabeçalho Cache-Control
. Esse cabeçalho é definido pela especificação HTTP (em inglês).
Por exemplo, o seguinte cabeçalho Cache-Control
torna o conteúdo associado publicamente legível e armazenado em cache com uma expiração de cache de 72 horas (259.200 segundos):
Cache-Control: public, max-age=259200
Para maximizar o armazenamento em cache, siga as diretrizes na Visão geral do armazenamento em cache. Lembre-se de que os valores max-age
e s-maxage
no campo de metadados Cache-Control
funcionam juntos das seguintes maneiras:
- Os valores
max-age
es-maxage
são medidos em segundos. - O valor
s-maxage
se aplica somente a caches compartilhados, não a caches do navegador. - O valor
max-age
se aplica a todos os caches, a menos ques-maxage
o substitua.
Para conteúdo que é alterado com baixa frequência ou que mudar junto com o conteúdo relacionado, muitas vezes é adequado usar um intervalo de expiração mais longo com URLs de versão.
Use URLs que passaram pelo controle de versão para atualizar conteúdo
O controle do conteúdo de versão veicula uma versão diferente do mesmo conteúdo, removendo-o efetivamente. Para isso, o conteúdo novo é exibido aos usuários antes que a entrada do cache expire. Como o controle de versão é gratuito, recomendamos que você o utilize como a abordagem padrão para atualizar o conteúdo armazenado em cache.
Para o conteúdo de versão, adicione um parâmetro ao URL, como um número de versão. Existem várias maneiras de incluir parâmetros em URLs:
Adicionar uma string de consulta:
file.ext?v=100
.Para buckets de back-end, quaisquer strings de consulta usadas no controle de versões precisam ser especificadas na configuração do bucket de back-end. Para mais informações, consulte String de consulta inclui lista para chaves de cache do Cloud Storage.
Altere o nome do arquivo:
file.1.0.0.ext
oufile_v100.ext
.Altere o caminho:
/v100/file.ext
.
Ao adicionar o parâmetro, o nome do arquivo e o URL são alterados. Essa alteração força o cache a ignorar qualquer entrada de cache atual.
Use a invalidação com moderação para remover conteúdo
A invalidação remove o conteúdo dos servidores de cache distribuídos do Cloud CDN antes da expiração do cache. A invalidação tem consistência eventual.
Use a invalidação com moderação e apenas como último recurso. Por exemplo, a invalidação é ideal para quando você precisa remover conteúdo por motivos legais ou por conta de um envio acidental. Caso contrário, use o controle de versão sempre que possível ou aguarde até que o conteúdo expire normalmente. Os servidores de cache do Cloud CDN despejam rotineiramente conteúdo acessado com pouca frequência para criar espaço para novos conteúdos. O conteúdo que não é acessado por 30 dias é removido incondicionalmente.
As invalidações de cache são limitadas por taxa.
Para saber mais sobre a invalidação, consulte a Visão geral da invalidação de cache.
Otimizar a consistência dos arquivos enviados
As práticas recomendadas a seguir ajudam a otimizar a consistência dos uploads de arquivos.
Evite atualizar arquivos existentes
Em vez de atualizar arquivos existentes, faça upload de novas versões.
Para novos arquivos, use nomes exclusivos que podem incluir números de versão ou datas.
A adição de um número de versão (por exemplo, file_v2.css
) ou uma data (por exemplo,
file_20230806.js
) ao nome do arquivo ajuda a garantir que o Cloud CDN
busque a versão correta e atualizada. Não é recomendável anexar um parâmetro ao URL do arquivo (por exemplo,
file.css?v=2
) para forçar a busca de uma nova versão, porque
essa abordagem não aborda o risco de armazenar em cache uma atualização de arquivo de origem
não atômica, em que arquivos parciais ou incompletos ainda podem ser armazenados em cache.
É fundamental fazer upload de novas versões das dependências antes de fazer upload dos arquivos que as referenciam. Essa prática ajuda a garantir que todas as referências sejam para arquivos completos e atualizados, reduzindo o risco de exibir arquivos parcialmente atualizados ou truncados.
Fazer atualizações atômicas em arquivos
Quando for necessário atualizar arquivos existentes, faça isso de forma atômica.
Se um arquivo for acessado e armazenado em cache antes de um upload ser concluído, ele poderá ser
armazenado em cache como um arquivo incompleto ou truncado. Por exemplo, um arquivo, como
/index.html
, não pode ter um nome exclusivo, mas pode apontar para outros arquivos com
nomes exclusivos.
O upload de um arquivo com o nome de destino pode resultar em arquivos incompletos sendo armazenados em cache quando acessados durante o upload. Em vez disso, faça upload do arquivo com um nome temporário e renomeie-o com o nome de destino somente após o upload ser concluído. Essa prática ajuda a garantir que o arquivo esteja totalmente e imediatamente disponível quando referenciado.
Quando os arquivos atuais são atualizados, o armazenamento em cache de intervalos de bytes
pode fazer com que o Cloud CDN mantenha intervalos do arquivo anterior depois que o novo
for enviado. Se o Cloud CDN tiver intervalos armazenados em cache do arquivo anterior,
as solicitações de blocos ausentes poderão resultar em respostas parciais. Isso acontece
porque o Cloud CDN detecta que o arquivo de origem mudou
(porque etag
ou last-modified
mudou), exclui qualquer conteúdo desatualizado,
desconecta todos os downloads em andamento e gera um erro, o que faz com que
o cliente tente novamente. Para atenuar esse problema, emita
invalidações para arquivos em cache de intervalo de bytes que estão sendo atualizados.
Otimize o Monitoring e o Logging
As práticas recomendadas a seguir ajudam a otimizar o Monitoring e o Logging.
Verificar se a geração de registros está ativada para o Cloud CDN
Uma prática recomendada para gerenciar o Cloud CDN é garantir que a geração de registros esteja ativada para todos os back-ends ativados do Cloud CDN.
Usar o painel de monitoramento personalizado do Cloud CDN
Para garantir maior confiabilidade e desempenho, uma prática recomendada é analisar regularmente as métricas de monitoramento relacionadas ao Cloud CDN. Um ótimo lugar para começar é o painel de monitoramento personalizado do Cloud CDN.
Analisar testes de desempenho de terceiros
Analise os relatórios de provedores terceirizados, como disponibilidade, latência e relatórios de capacidade fornecidos pelo Citrix Radar (links em inglês).