rochasolutions
Performance

Tempo de Carregamento do Site: Como Reduzir na Prática

Danilo Rocha6 min de leitura

O que é tempo de carregamento de um site

Tempo de carregamento de um site é o intervalo entre o clique do usuário em um link e o momento em que a página fica pronta para uso, com conteúdo visível e interativo. Não é a mesma coisa que LCP: LCP mede só o carregamento do maior elemento visual, enquanto tempo de carregamento cobre a jornada inteira, da requisição ao servidor até o último script terminar de rodar.

Essa diferença importa na hora de decidir onde investir. Um site pode ter LCP bom e ainda parecer lento, se o JavaScript continuar bloqueando a thread principal depois que a imagem já apareceu na tela. Para o diagnóstico específico dessa métrica, vale o guia como otimizar o LCP do seu site. Aqui o foco é o carregamento como um todo: servidor, rede e execução de código.

Suponha um site institucional que carrega em 5 segundos. Metade desse tempo pode estar no servidor respondendo devagar, e a outra metade no navegador baixando e executando um bundle de JavaScript maior do que precisa. Cada causa pede uma correção diferente, e tratar as duas como se fossem a mesma coisa é o erro mais comum.

Como medir o tempo de carregamento do site na prática

Medir tempo de carregamento sem a ferramenta certa é chute. Estes passos cobrem tanto dado de laboratório quanto dado de usuário real.

  1. Abra o DevTools do Chrome, aba Network, marque "Disable cache" e recarregue a página. A coluna "Load" no rodapé mostra o tempo total até o evento load disparar.
  2. Rode o PageSpeed Insights com a URL da página. Ele traz o teste de laboratório e, quando existe volume suficiente de visitas, o dado de campo do CrUX.
  3. Use o WebPageTest para simular conexão 4G ou 3G. A maioria dos times testa só em banda larga rápida e nunca vê o tempo real de quem acessa pelo celular em rede ruim.
  4. Confira o relatório de Core Web Vitals no Search Console para saber se o problema afeta todas as páginas ou só um grupo específico de URL.

Repita a medição depois de cada mudança. Dado de laboratório reflete o ajuste na hora. Dado de campo demora alguns dias para acumular volume suficiente.

Como reduzir o tempo de resposta do servidor

Tempo de resposta do servidor, o TTFB, é o primeiro item do orçamento de carregamento. Nada no navegador começa antes dele. Um TTFB de 1,5 segundo já consome boa parte da meta de 2,5 segundos que o Google considera boa para LCP, antes mesmo do HTML chegar.

A causa mais comum é consulta ao banco sem índice. Índice na coluna certa resolve boa parte desses casos sem mexer em mais nada. Cache de aplicação na consulta mais pesada ataca o que sobra, e um servidor longe geograficamente de quem acessa soma um tempo de rede que nenhuma das duas correções toca. Hospedar perto do público, ou usar renderização no servidor com cache de página, resolve os três problemas juntos.

Como reduzir o peso de JavaScript e CSS

JavaScript e CSS pesados atrasam o carregamento em duas frentes: o download do arquivo e a execução depois que ele chega. Um bundle de 800KB de JavaScript pesa na banda, mas o custo maior costuma ser outro: o tempo de parse e execução na thread principal, disputando espaço com qualquer interação do usuário.

Code splitting divide o bundle em pedaços menores, carregados só quando a rota ou o componente é realmente necessário. Em Next.js, import() dinâmico ou o componente next/dynamic fazem isso sem configuração extra:

import dynamic from 'next/dynamic';

const GraficoPesado = dynamic(() => import('./GraficoPesado'), {
  loading: () => <p>Carregando...</p>,
});

Esse ajuste sozinho tira do bundle inicial qualquer código usado só em uma tela específica, como um editor de texto rico ou uma biblioteca de gráficos.

Tree shaking remove código morto do bundle final, mas só funciona bem quando a biblioteca exporta em formato ES modules e o projeto importa a função específica, não o pacote inteiro. Trocar import _ from 'lodash' por import debounce from 'lodash/debounce' é a diferença entre carregar a biblioteca inteira e carregar uma função.

Para CSS, o mesmo princípio vale. Extrair o que é crítico para a primeira tela e adiar o resto evita que o navegador espere por estilo que a página ainda nem vai usar.

Como cache e CDN cortam tempo de carregamento

Cache evita refazer trabalho caro, e CDN evita que a requisição percorra a distância inteira até o servidor de origem. Juntos, cortam boa parte do tempo de carregamento sem tocar em uma linha de lógica de negócio.

Um cabeçalho Cache-Control bem configurado faz o navegador reaproveitar um arquivo estático sem nem perguntar ao servidor se ele mudou. Para conteúdo que muda pouco, como imagem, fonte e bundle de JavaScript com hash no nome, isso elimina a requisição de rede inteira nas visitas seguintes. O guia sobre cache de aplicação detalha onde colocar cada camada e como evitar servir dado velho.

CDN distribui uma cópia dos arquivos estáticos em servidores espalhados geograficamente, então a requisição percorre uma distância menor até a resposta. Para um site com público espalhado por várias regiões, essa distância sozinha pode valer mais do que qualquer otimização de código.

Passo a passo para priorizar as correções

Nem toda causa de lentidão pesa igual, e corrigir na ordem errada custa tempo de equipe sem ganho proporcional.

  1. Meça o TTFB primeiro. Se o servidor já demora mais de 1 segundo para responder, nenhuma otimização de front-end resolve isso sozinha.
  2. Confira o tamanho do bundle de JavaScript no relatório do Lighthouse. Se passar de algumas centenas de KB, procure código não usado ou biblioteca pesada demais para o que ela resolve.
  3. Ative cache de aplicação nas consultas mais lentas e cache HTTP nos arquivos estáticos.
  4. Adicione uma CDN se o público estiver espalhado geograficamente.
  5. Meça de novo, com dado de campo, antes de considerar o problema resolvido.

Tempo de carregamento não é uma métrica que se corrige uma vez e se esquece. Cada nova dependência, script de terceiro ou consulta sem índice pode devolver o site ao ponto de partida. Se sua aplicação está lenta e você quer um diagnóstico completo de onde o tempo está sendo perdido, fale com a gente.