Skip to content
Latchkey

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.

Guias relacionados