Pular para o conteudo principal

Como o Browser Carrega JS, CSS, Fonte e Imagem

Como esses recursos entram na pagina em tempos e pesos diferentes, e por que isso muda pintura, bloqueio e percepção de velocidade.

Andrews Ribeiro

Andrews Ribeiro

Founder & Engineer

Trilha

Trilha para entrevistas de senior frontend

Etapa 9 / 15

O problema

Quando uma pagina parece lenta, muita gente olha só para o número total de requisicoes ou para o tamanho total baixado.

Isso ajuda um pouco.

Mas ainda e uma visão fraca.

Porque o browser não trata todos os recursos do mesmo jeito.

E o usuário também não sente todos os atrasos da mesma forma.

Uma imagem pesada abaixo da dobra e um problema diferente de:

  • CSS crítico atrasado
  • JavaScript que bloqueia a thread principal
  • fonte que troca o texto depois

Modelo mental

O browser vai descobrindo e pedindo recursos enquanto monta a pagina.

Mas cada tipo de arquivo interfere em uma fase diferente:

  • CSS influencia a renderização visual
  • JavaScript pode atrasar parse, execução e interatividade
  • fonte altera como o texto aparece
  • imagem pesa em bytes, layout e pintura

Em vez de perguntar “o site esta pesado?”, ajuda perguntar:

o que esta atrasando ver, ler, clicar ou estabilizar a tela?

Quebrando o problema

CSS

CSS parece barato porque “não e lógica”.

Só que ele costuma ser muito importante para a renderização inicial.

Sem os estilos relevantes, o browser pode evitar pintar cedo o que ainda não consegue apresentar direito.

Por isso CSS crítico costuma ter impacto alto em:

  • primeira pintura
  • layout inicial
  • estabilidade visual

JavaScript

JavaScript pesa em mais de uma etapa:

  • download
  • parse
  • compilacao
  • execução

E ainda disputa thread principal com:

  • input
  • layout
  • paint
  • hydration

Por isso bundle grande não e só problema de rede.

Também e problema de CPU e de interatividade atrasada.

Fontes

Fonte parece detalhe visual, mas afeta percepção forte.

Ela pode causar:

  • texto invisível por um tempo
  • troca visual quando a fonte final chega
  • mudança sutil ou grande de layout

Quando o texto muda de metragem entre a fonte fallback e a final, a pagina pode mexer na cara do usuário.

Imagens

Imagem costuma cobrar muito em bytes.

Mas o custo não para ai.

Ela também pode causar:

  • pintura cara
  • layout shift se dimensao não estiver bem definida
  • atraso visual em areas importantes da pagina

Imagem principal e diferente de icone pequeno.

De novo: nem todo recurso pesa igual.

Exemplo simples

Imagine uma home com:

  • HTML inicial
  • um CSS principal
  • um bundle JS grande
  • fonte customizada
  • hero image pesada

Se o CSS demora, a pagina pode atrasar a pintura útil.

Se o JS e grande, a estrutura até pode aparecer, mas a interatividade demora mais.

Se a fonte troca tarde, o texto pode piscar ou mudar.

Se a imagem hero chega tarde e sem dimensao bem definida, a dobra parece instável.

O usuário não sente “uma pagina de 2 MB”.

Ele sente:

  • “demorou para aparecer”
  • “apareceu mas ainda não dava para usar”
  • “a tela ficou mexendo”

Erros comuns

  • Tratar todo byte como se tivesse o mesmo peso.
  • Olhar só para número de requests.
  • Ignorar custo de execução do JavaScript.
  • Achar que imagem e sempre o maior culpado.
  • Esquecer que fonte e CSS mudam bastante a experiência inicial.

Como um senior pensa

Quem tem mais experiência costuma decompor o carregamento em perguntas menores:

  • o que bloqueia a primeira pintura?
  • o que bloqueia a interatividade?
  • o que causa instabilidade visual?
  • o que pode chegar depois sem estragar a experiência?

Essa decomposicao e muito mais útil do que falar genericamente em “site pesado”.

O que o entrevistador quer ver

Em entrevista, esse assunto aparece como entendimento real de browser e performance.

Você sobe de nivel quando:

  • diferencia impacto de CSS, JS, fonte e imagem
  • conecta recurso a fase da experiência
  • fala de CPU alem de rede
  • evita slogan simplista do tipo “e só comprimir tudo”

Uma resposta forte costuma soar assim:

“Eu separaria o que bloqueia ver daquilo que bloqueia interagir. CSS e HTML influenciam muito a leitura inicial. JavaScript pesa também na CPU. Fonte e imagem afetam estabilidade e percepção visual.”

Browser lento nem sempre esta gritando sobre bytes. As vezes ele esta pedindo socorro por causa da ordem errada das coisas.

Resumo rápido

O que vale manter na cabeça

Checklist de pratica

Use isto ao responder

Você concluiu este artigo

Parte da trilha: Trilha para entrevistas de senior frontend (9/15)

Próximo artigo CORS: por que Existe e Como Funciona de Verdade Artigo anterior Cache no Browser: HTTP Cache, Memory Cache e Service Worker

Continue explorando

Artigos relacionados