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.