O custo escondido de consultar o banco a cada visita
Uma home que lê o banco a cada acesso parece inofensiva em desenvolvimento. Em produção, ela transforma tráfego em fatura — e a conta cresce junto com o sucesso.
por Produfy

Todo banco cobrado por operação tem a mesma armadilha: o código que funciona perfeitamente com dez visitas por dia é o mesmo que gera uma fatura desagradável com dez mil.
A conta
Imagine uma home que lista quatro produtos, seis serviços e três posts. São treze leituras por carregamento — mais as configurações do site, digamos quinze.
| Visitas/mês | Leituras |
|---|---|
| 1.000 | 15.000 |
| 50.000 | 750.000 |
| 500.000 | 7.500.000 |
O conteúdo é exatamente o mesmo nas três linhas. A única coisa que mudou foi quanta gente olhou para ele.
O erro conceitual
O problema não é técnico, é de modelo mental. Tratar a página como "consulta o dado e mostra" faz sentido num painel administrativo, onde cada usuário vê algo diferente. Não faz sentido num site institucional, onde todo mundo vê a mesma coisa.
A pergunta que separa os dois casos:
Duas pessoas acessando esta página ao mesmo tempo veriam conteúdo diferente?
Se a resposta é não, essa página não deveria consultar nada.
O padrão que resolve
Gerar a página quando o conteúdo muda, e servir o resultado pronto:
- O editor publica algo no CMS.
- O sistema regenera apenas as páginas afetadas.
- O CDN passa a servir o HTML novo.
- Nenhuma visita toca o banco.
Duas coisas importam nesse desenho.
Revalidar por rota, não o site inteiro. Publicar um post não deveria reconstruir as páginas de produto. Invalidação cirúrgica mantém o custo de publicação baixo e o site rápido.
Ter uma rede de segurança. Além da revalidação sob demanda, um prazo de expiração — uma hora, por exemplo — garante que uma falha na invalidação não deixe conteúdo velho no ar para sempre.
Onde o CMS entra
O painel administrativo pode consultar o banco à vontade. Ele tem poucos usuários, e a informação precisa estar fresca — um editor que salva e vê o valor antigo perde a confiança na ferramenta.
Isso leva a uma separação simples:
- Site público: estático, cacheado, zero leitura por visita.
- Painel: dinâmico, consulta direta, leitura por interação.
São duas naturezas diferentes no mesmo projeto, e tratá-las igual é o que costuma sair caro.
Um detalhe que passa despercebido
Cuidado com listagens que agregam. Uma caixa de entrada que lê todas as mensagens para montar a lista de conversas custa uma leitura por mensagem, não por conversa.
A saída é desnormalizar: manter na conversa os campos que a listagem precisa — último trecho, data, contagem de não lidas. Custa uma escrita a mais quando chega mensagem, e economiza uma leitura por mensagem em toda abertura da tela.
Tags
- #performance
- #cache
- #firestore
- #custo


