O que é Cache? | Como o Caching Funciona

O cache armazena cópias de dados em uma camada de armazenamento mais rápida para que requisições repetidas sejam atendidas sem acessar a origem. Aprenda sobre cache hit vs miss, TTL, estratégias de cache e headers HTTP de cache.

O cache armazena cópias de dados em uma camada de armazenamento mais rápida para que requisições repetidas sejam atendidas sem acessar a origem — reduzindo a latência, a carga do backend e os custos de infraestrutura.


Resumo O cache é a prática de armazenar uma cópia de dados em uma camada de armazenamento rápida e temporária (o cache) para que requisições futuras possam ser respondidas sem repetir o cálculo original ou a consulta ao banco de dados. Um cache hit retorna dados instantaneamente do cache. Um cache miss busca na origem e armazena o resultado para uso futuro. O cache reduz os tempos de resposta de centenas de milissegundos para menos de 10 milissegundos para requisições repetidas. Cada camada da web moderna usa cache: CPUs, navegadores, servidores de aplicação, bancos de dados, CDNs e redes distribuídas.


O que é cache?

Cache é armazenar uma cópia reutilizável de dados em uma camada de armazenamento mais rápida para que requisições subsequentes pelos mesmos dados possam ser atendidas sem repetir a busca ou o cálculo original.

A mecânica fundamental:

  • Cache hit — Os dados solicitados são encontrados no cache. Retornados imediatamente, sem necessidade de requisição à origem.
  • Cache miss — Os dados solicitados não estão no cache. O sistema busca na origem, armazena o resultado em cache e o retorna.
  • TTL (Time To Live) — A duração pela qual um item em cache é considerado válido antes de precisar ser atualizado.
  • Eviction — Quando o cache está cheio, itens antigos ou menos usados são removidos para dar espaço. Políticas comuns: LRU (Least Recently Used), LFU (Least Frequently Used), FIFO (First In First Out).

Tipos de cache

O cache acontece em cada camada do stack tecnológico:

Camada de cacheOnde operaO que armazenaLatência típica
Cache de CPU (L1/L2/L3)Dentro do processadorInstruções e dados da RAM< 1 nanosegundo
Cache do navegadorDispositivo do usuárioHTML, CSS, JavaScript, imagens0 ms (disco local)
Cache de aplicaçãoMemória do servidor de aplicaçãoResultados calculados, dados de sessão< 1 ms
Cache de consultas de banco de dadosCamada de banco de dadosConjuntos de resultados de consultas< 5 ms
Cache CDN / distribuídoNós de rede distribuídosConteúdo web estático e dinâmico< 10 ms (PoP mais próximo)
Cache DNSResolver e SOMapeamentos domínio-para-IP< 1 ms (após primeiro lookup)

Estratégias de cache

EstratégiaComo funcionaMelhor paraRisco
Cache-aside (carregamento preguiçoso)App verifica o cache primeiro; em miss, carrega da origem e popula o cacheCargas de trabalho com muita leituraCold start inicial
Write-throughCada escrita vai ao cache e à origem simultaneamenteDados críticos de consistênciaEscritas mais lentas
Write-back (write-behind)Escritas vão primeiro ao cache; a origem é atualizada de forma assíncronaAlta capacidade de escritaPerda de dados em falha do cache
Read-throughO cache lida com a busca de forma transparente; app só fala com o cacheSimplificar a lógica do appDependência de biblioteca de cache
Stale-while-revalidateServe conteúdo em cache desatualizado imediatamente; atualiza em segundo planoDesempenho web, CDNDesatualização breve aceitável

Headers HTTP de cache

O cache de CDN e navegador é controlado por headers HTTP:

HeaderSignificado
Cache-Control: max-age=3600Armazena esta resposta em cache por 3600 segundos (1 hora)
Cache-Control: no-storeNunca armazenar esta resposta em nenhum lugar
Cache-Control: no-cacheArmazenar em cache, mas revalidar com a origem antes de servir
Cache-Control: publicA resposta pode ser armazenada por caches compartilhados (CDNs, proxies)
Cache-Control: privateApenas o navegador do usuário final pode armazená-la em cache
ETagIdentificador único para uma versão de um recurso; habilita requisições condicionais
VaryDiz aos caches para armazenar versões separadas com base nos headers especificados (ex.: Vary: Accept-Encoding)

Invalidação de cache

A invalidação de cache é o processo de remover ou atualizar dados em cache antes que seu TTL expire. É um dos problemas mais difíceis em sistemas distribuídos.

Métodos:

  • Purge — Excluir explicitamente uma URL ou chave específica do cache.
  • Invalidação baseada em tags — Agrupar entradas de cache por tag e purgar todas as entradas que compartilham uma tag de uma só vez.
  • URLs versionadas — Incorporar um hash de versão em URLs de assets (ex.: style.abc123.css); nova versão = nova URL = cache miss automático.
  • Surrogate keys — Usadas por CDNs para invalidar grupos de objetos relacionados com uma única chamada de API.

Erros comuns de cache

ErroConsequênciaSolução
Armazenar respostas personalizadas em cache sem VaryUsuário A recebe os dados privados do usuário BAdicione Vary: Cookie ou evite cachear respostas privadas
TTL definido arbitrariamente altoConteúdo desatualizado exibido após atualizaçõesDefina o TTL com base na frequência real de mudanças dos dados
Sem plano de invalidaçãoErros e conteúdo desatualizado persistem indefinidamenteImplemente endpoints de purge ou URLs versionadas
Armazenar respostas de erro (500) em cacheRespostas de erro servidas do cache por horasExclua explicitamente códigos de status não-2xx do cache
Cache stampede ao expirarPico de requisições à origem quando um item popular expira simultaneamenteUse stale-while-revalidate ou request coalescing

Perguntas frequentes

O que é cache em termos simples? Cache armazena uma cópia dos dados em um local mais rápido para que os mesmos dados possam ser retornados rapidamente na próxima vez sem buscá-los novamente na fonte original.

O que é cache hit vs cache miss? Um cache hit significa que os dados solicitados foram encontrados no cache e retornados imediatamente. Um cache miss significa que os dados não estavam no cache — o sistema precisou buscá-los na fonte original, o que leva mais tempo.

O que é TTL no cache? TTL (Time To Live) é o número de segundos que um item em cache é considerado válido. Um TTL de 3600 significa que o item fica em cache por 1 hora. Quando o TTL expira, a próxima requisição aciona uma nova busca na origem.

Uma CDN é o mesmo que cache? Não. Uma CDN (Content Delivery Network) é uma rede distribuída de servidores. O cache é uma das técnicas que as CDNs usam. O cache também acontece em navegadores, aplicações, bancos de dados e outras camadas completamente separadas das CDNs.

O que é invalidação de cache e por que é difícil? Invalidação de cache significa remover ou atualizar dados em cache antes que seu TTL expire. É difícil porque em sistemas distribuídos, os mesmos dados estão em cache em múltiplos lugares simultaneamente — uma entrada de cache pode precisar ser invalidada em centenas de nós de rede distribuída, múltiplos caches de navegador e caches de nível de aplicação ao mesmo tempo.

Como funciona o cache do navegador? Os navegadores armazenam assets (imagens, CSS, JavaScript) em cache com base nos headers de resposta HTTP. O header Cache-Control: max-age diz ao navegador por quanto tempo manter o arquivo. Quando o TTL expira, o navegador solicita uma versão atualizada ao servidor.

O que é stale-while-revalidate? Stale-while-revalidate é uma diretiva de cache onde o cache serve uma resposta ligeiramente desatualizada imediatamente enquanto simultaneamente busca uma versão atualizada em segundo plano. Isso elimina a latência de revalidação sem servir conteúdo significativamente desatualizado.

Qual é a diferença entre cache-aside e read-through? No cache-aside, o código da aplicação gerencia o cache — verifica o cache e, em caso de miss, carrega os dados da origem e popula o cache. No read-through, a camada de cache lida com a busca da origem de forma transparente, e a aplicação só interage com o cache.

fique atualizado

Inscreva-se na nossa Newsletter

Receba as últimas atualizações de produtos, destaques de eventos e insights da indústria de tecnologia diretamente no seu e-mail.