O Que É a Invalidação de Cache de CDN

Introdução à cache de CDN
Uma Content Delivery Network (CDN) funciona armazenando em cache cópias do seu conteúdo em servidores edge em todo o mundo e servindo-as aos utilizadores a partir do servidor mais próximo, em vez de cada pedido ir até ao seu servidor de origem. Isto reduz drasticamente a latência e acelera o carregamento do site para os utilizadores, independentemente de onde se encontrem. No entanto, a cache traz um desafio fundamental — como garantir que os utilizadores veem sempre a versão mais recente do conteúdo quando faz alterações no site.
A invalidação de cache é o processo de remover ou substituir conteúdo desatualizado da cache da CDN. Phil Karlton disse uma vez que existem apenas duas coisas difíceis na ciência da computação: nomear coisas e a invalidação de cache. Esta afirmação ilustra na perfeição a complexidade da gestão de cache, porque cada decisão errada pode resultar em utilizadores a ver conteúdo desatualizado ou no servidor de origem a ser sobrecarregado desnecessariamente porque a cache é limpa de forma demasiado agressiva.
Como funciona a cache de CDN
Quando um utilizador solicita pela primeira vez um recurso que não está em cache, a CDN reencaminha o pedido para o servidor de origem, recebe a resposta e armazena uma cópia no seu servidor edge. Todos os pedidos subsequentes para o mesmo recurso a partir do mesmo servidor edge são servidos diretamente da cache, sem contactar a origem. O servidor de origem controla o comportamento da cache através de cabeçalhos HTTP como Cache-Control, Expires, ETag e Last-Modified.
Cabeçalhos HTTP fundamentais para a cache
- Cache-Control: max-age=3600 - o recurso permanece fresco durante os próximos 3600 segundos (1 hora)
- Cache-Control: s-maxage=86400 - específico para caches partilhadas (CDN), com prioridade sobre max-age
- Cache-Control: no-cache - a cache tem de revalidar com a origem antes de servir
- Cache-Control: no-store - o recurso nunca deve ser colocado em cache
- ETag - identificador único da versão do recurso para revalidação
- Vary - determina por que cabeçalhos diferem as versões em cache
Compreender estes cabeçalhos é fundamental, pois definem as regras pelas quais a CDN decide se serve a versão em cache ou se pede uma nova à origem. Cabeçalhos mal configurados são a causa mais comum de problemas com conteúdo desatualizado ou de pedidos desnecessariamente frequentes à origem.
Purga de cache - limpeza manual da cache
A purga de cache é a forma mais direta de remover conteúdo da cache da CDN. A maioria dos fornecedores de CDN oferece API e painel para acionar manualmente operações de purga. Pode limpar um único URL, um grupo de URLs por padrão (wildcard purge) ou a cache completa de todos os recursos. Cada abordagem tem vantagens e desvantagens consoante a situação.
Tipos de operações de purga
A purga de um único URL é o método mais preciso e rápido, pois visa exatamente um recurso. Use-a quando atualizar uma página ou ficheiro. A purga por wildcard elimina todos os recursos que correspondem a um determinado padrão; por exemplo, /blog/* elimina todas as páginas do blog da cache. Isto é útil ao atualizar um maior número de páginas sem querer limpar a cache completa. A purga total elimina absolutamente tudo da cache e só deve ser usada em situações urgentes, pois aumenta temporariamente a carga no servidor de origem enquanto a cache é reconstruída.
As operações de purga propagam-se normalmente pela rede da CDN em 1 a 30 segundos, consoante o fornecedor e a dimensão da rede. A purga na rede Cloudflare propaga-se em cerca de 30 segundos a nível global, enquanto a AWS CloudFront pode exigir até 15 minutos para invalidações por wildcard. Tenha sempre este atraso em mente ao fazer alterações em produção e ao testar se a nova versão já está visível.
Estratégias de TTL
O Time-To-Live (TTL) determina durante quanto tempo a CDN considera o conteúdo em cache como fresco antes de pedir uma nova versão à origem. Definir corretamente o TTL é um equilíbrio entre desempenho (TTL mais longo = menos pedidos à origem) e frescura do conteúdo (TTL mais curto = alterações visíveis mais depressa). Não existe um TTL universalmente correto, pois depende do tipo de conteúdo e da frequência com que muda.
TTL recomendado por tipo de conteúdo
- Ativos estáticos (JS, CSS, tipos de letra) - 1 ano (31536000s) com versionamento de ficheiros
- Imagens - 30 dias (2592000s) com revalidação por ETag
- Páginas HTML - 5 minutos a 1 hora consoante o conteúdo dinâmico
- Respostas de API - 0 a 60 segundos consoante os dados
- Favicon e robots.txt - 1 dia (86400s)
A diretiva stale-while-revalidate é uma excelente estratégia que permite à CDN servir conteúdo desatualizado aos utilizadores enquanto, em simultâneo, pede uma nova versão à origem em segundo plano. Isto significa que o utilizador nunca espera pelo servidor de origem, mas verá a nova versão no pedido seguinte. Por exemplo, Cache-Control: max-age=60, stale-while-revalidate=3600 significa que o conteúdo está fresco durante 60 segundos, mas pode ser servido da cache durante a hora seguinte enquanto é atualizado em segundo plano.
Versionamento de recursos
O versionamento de recursos é a estratégia mais elegante para resolver o problema da invalidação de cache, pois elimina completamente a necessidade de operações de purga explícitas. Em vez de alterar o conteúdo do ficheiro no mesmo URL, cada nova versão recebe um novo URL, o que significa que a CDN serve automaticamente a nova versão, pois trata-a como um recurso completamente novo que ainda não está em cache.
Métodos de versionamento
O hash de conteúdo no nome do ficheiro é o método mais popular. Ferramentas de build como Webpack, Vite e Next.js adicionam automaticamente o hash de conteúdo ao nome do ficheiro; por exemplo, style.a1b2c3d4.css. Quando o CSS muda, o hash muda e é gerado um novo ficheiro com um novo nome. A versão antiga permanece em cache, mas já ninguém a referencia, pois o HTML aponta agora para o novo ficheiro.
O versionamento por query string (style.css?v=1.2.3) é uma abordagem mais simples, mas menos fiável, pois alguns fornecedores de CDN ignoram as query strings ao colocar em cache. Use-a apenas se não conseguir alterar o nome do ficheiro. O versionamento por caminho (/v2/style.css) é outra opção que funciona de forma fiável com todos os fornecedores de CDN, mas exige mais configuração no servidor.
Quando invalidar a cache
Saber quando invalidar a cache é tão importante como saber como o fazer. Os cenários mais comuns que exigem invalidação incluem a publicação de uma nova versão do site no servidor de alojamento, a correção de um erro crítico no conteúdo, a remoção de conteúdo sensível publicado acidentalmente e a alteração de preços ou disponibilidade de produtos numa loja de comércio eletrónico. Em todos estes casos, os utilizadores têm de ver o conteúdo atualizado o mais depressa possível.
Boas práticas de invalidação
- Automatize - integre a purga de cache no pipeline de CI/CD para invalidação automática em cada deploy
- Seja preciso - vise URLs específicos em vez da purga total sempre que possível
- Use versionamento - para ativos estáticos elimina completamente a necessidade de invalidação manual
- Monitorize - acompanhe o cache hit ratio para descobrir problemas de configuração
- Teste - verifique os cabeçalhos com curl -I para confirmar que a cache funciona como esperado
- Documente - registe os valores de TTL e a estratégia de invalidação para cada tipo de conteúdo
Problemas comuns e soluções
Um dos problemas mais comuns é o chamado stale content, em que os utilizadores veem conteúdo desatualizado apesar das alterações que fez no servidor de origem. A causa é normalmente um TTL demasiado longo sem um mecanismo de invalidação. A solução é a combinação de um TTL razoável com operações de purga automatizadas no deploy. Outro problema comum é o cache stampede, em que, depois de o TTL expirar para um recurso popular, centenas de pedidos concorrentes atingem o servidor de origem em simultâneo. A solução é o request coalescing, em que a CDN envia apenas um pedido à origem enquanto retém todos os outros pedidos até receber a resposta.
O problema de versões de conteúdo diferentes em servidores edge diferentes (inconsistência de cache) surge porque uma operação de purga não se consegue propagar a todos os servidores em simultâneo. Durante o curto período após a purga, alguns utilizadores verão a versão antiga e outros a nova. Para alterações críticas, use o mecanismo de versionamento de URLs, que garante consistência, pois cada utilizador acede a uma versão do recurso definida com exatidão.
Equipa BeoHosting
10+ anos de experiência — Especialistas em alojamento web e infraestrutura
- Web Hosting
- WordPress Hosting
- VPS
- Dedicated Serveri
- Domeni
- SSL
- cPanel
- LiteSpeed
- Linux administracija
- DNS
Última atualização: