Cache em camadas: do navegador à aplicação

Publicidade

Quando alguém abre uma página, a resposta pode vir de vários lugares antes de chegar ao código da aplicação. Cada um deles é uma camada de cache, e todas obedecem, em maior ou menor grau, ao cabeçalho Cache-Control.

As quatro camadas

  1. Navegador: guarda a cópia no disco do próprio leitor. É a mais rápida e a mais difícil de limpar, porque você não controla a máquina dele.

  2. CDN, como a Cloudflare: guarda cópias em servidores espalhados pelo mundo, perto do leitor.

  3. Proxy reverso, como o Nginx: protege a aplicação de picos e continua respondendo se ela cair por alguns segundos.

  4. Aplicação: o cache do próprio framework, como o ISR do Next.js.

Um cabeçalho, dois públicos

O Cache-Control separa o navegador dos caches compartilhados:

Cache-Control: public, max-age=0, must-revalidate, s-maxage=31536000
  • max-age=0, must-revalidate: o navegador sempre confere se a cópia ainda vale. Com ETag, a resposta é um 304 de poucos bytes.

  • s-maxage: vale só para CDN e proxy, que podem guardar a cópia por muito mais tempo.

O que nunca deve ser cacheado

Páginas de usuário logado precisam de private, no-store. Um cache compartilhado que guarde o painel de uma pessoa pode servir essa tela para outra. É o tipo de falha que não gera erro nenhum, só um vazamento silencioso.

Performance