Iniciante Arquitetura de Sistemas

FPC (Full Page Cache)

Full Page Cache (FPC) é guardar o HTML completo de uma página já pronta para servir de novo sem reprocessar nada. Em vez de o servidor montar a página a cada visita, ele entrega a versão salva. Resultado: muito mais rápido e menos carga.

A ideia

Sem cache:
Requisição -> App processa -> Banco -> monta HTML -> envia (lento)

Com FPC:
Requisição -> Cache tem HTML pronto -> envia (rápido)

A primeira visita gera a página e salva. As próximas pegam do cache.

Onde fica o cache

  • Na frente da aplicação (ex.: um proxy reverso ou CDN).
  • Dentro da aplicação (memória, Redis, arquivos).
Usuário -> [ CDN / Cache ] -> (só se faltar) -> Aplicação

Invalidação: o ponto difícil

O conteúdo muda, mas o cache guarda a versão antiga. Você precisa invalidar (limpar) quando o dado muda. Estratégias comuns:

  • Por tempo (TTL): o cache expira sozinho após X minutos.
  • Por evento: ao editar um produto, limpe a página dele.
  • Por tag: marque páginas com tags e limpe todas que dependem de um dado.
Produto editado -> limpa cache de /produtos/42 e /produtos

A frase clássica: “as duas coisas mais difíceis em computação são nomear coisas e invalidar cache”.

Conteúdo dinâmico

Partes que mudam por usuário (nome no topo, carrinho) atrapalham o cache. Soluções:

  • Cachear só a parte pública e carregar o resto via JavaScript.
  • ESI (Edge Side Includes): montar a página com pedaços cacheados e pedaços dinâmicos.

Vantagens

  • Resposta muito rápida.
  • Reduz carga no servidor e no banco.
  • Aguenta picos de tráfego com facilidade.

Desvantagens

  • Risco de servir conteúdo desatualizado.
  • Invalidação é complicada.
  • Ruim para páginas muito personalizadas.

Quando usar

Ideal para páginas iguais para todos e que mudam pouco: home, listagens, artigos, páginas de produto. Evite em páginas totalmente personalizadas, como o carrinho ou a área logada.