O Que É Cache Busting? Forçando Downloads Frescos de Assets
Cache busting altera a URL de um asset quando o seu conteúdo muda, forçando navegadores e CDNs a buscar a nova versão em vez de servir uma cópia obsoleta em cache.
Cache agressivo é ótimo para velocidade, mas perigoso se um deploy entregar novo código sob a mesma URL, porque os usuários mantêm o arquivo antigo em cache. Cache busting resolve isso alterando a URL sempre que o conteúdo muda. A abordagem moderna torna isso automático por meio de content hashing no build, então o deploy e o cache permanecem sincronizados.
O problema do asset obsoleto
Se app.js está em cache por muito tempo e você faz deploy de um novo app.js na mesma URL, usuários recorrentes continuam executando o arquivo antigo. Cache busting garante que uma mudança de conteúdo signifique uma mudança de URL, então o cache não pode servir a versão obsoleta.
Como content hashing derrota caches
O build embute um hash do conteúdo de cada arquivo no seu nome, como app.4f3a9b.js. Mude o conteúdo e o hash muda, produzindo um novo nome de arquivo e uma nova URL que o cache nunca viu.
Por que hashing supera query strings
- Um novo nome de arquivo é, sem ambiguidade, um novo recurso para os caches.
- Arquivos antigos podem permanecer em cache, então usuários em trânsito não são quebrados.
- Arquivos inalterados mantêm o nome e permanecem em cache.
A ligação com o HTML
O HTML precisa referenciar os novos nomes de arquivo com hash, então não pode ser mantido em cache por tanto tempo quanto os assets. A cada deploy o HTML atualiza para apontar para os novos hashes, e os assets de cache longo o acompanham.
Cache busting no CI/CD
O build emite nomes de arquivo com content-hash automaticamente, e o deploy envia os novos arquivos ao lado dos antigos. Isso significa que cache busting não precisa de limpeza manual de cache no caso comum: entregar novo conteúdo entrega novas URLs, e o CDN as serve corretamente.
Principais conclusões
- Cache busting altera a URL de um asset quando o conteúdo muda para derrotar caches obsoletos.
- Content hashes nos nomes de arquivo tornam o cache busting automático e preciso.
- O CI emite arquivos com hash, então os deploys não precisam de limpeza manual de cache no caso comum.