Quando o preload de stylesheets (não) faz sentido

Por que fazer o preload do seu CSS geralmente não ajuda, e o único caso em que ajuda

Arjen Karel Core Web Vitals Consultant
Arjen Karel - linkedin
Last update: 2026-03-07

Quando o Preload de Stylesheets (Não) Faz Sentido

Encontro regularmente stylesheets com preload e muita desinformação em torno deles. Fazer o preload de um recurso altera o momento em que ele é agendado para download. Mas, na maioria das vezes, fazer o preload de stylesheets não ajuda. Em cinco casos, mostrarei quando funciona e quando não funciona.

Última revisão por Arjen Karel em março de 2026

A ideia de fazer o preload de stylesheets

Stylesheets bloqueiam a renderização. Enquanto os stylesheets estão sendo baixados, a página não será renderizada pelo navegador e tudo o que o visitante verá é uma tela em branco.

Para minimizar o tempo necessário para baixar stylesheets, os desenvolvedores às vezes recorrem ao preload deles. O preload diz ao navegador para buscar um recurso antes de descobri-lo no HTML, para que fique pronto mais cedo. Isso é feito usando a tag <link> com o atributo rel="preload".

De acordo com o Web Almanac de 2025, apenas 13% das páginas em desktop passam na auditoria de recursos que bloqueiam a renderização. O preload não é a solução. A solução é eliminar recursos desnecessários que bloqueiam a renderização e adiar stylesheets não críticos.

Caso 1: fazendo o preload do stylesheet logo antes de declará-lo

Às vezes, os desenvolvedores, com todo o seu entusiasmo, tentam minimizar o impacto do CSS fazendo o preload dele no HTML logo antes da declaração real do CSS. Isso ficará mais ou menos assim:

<link rel="preload" as="style" href="style.css">
<link rel="stylesheet" href="style.css">

Isso não faz sentido nenhum e, na melhor das hipóteses, você não deixará a página mais lenta. Os navegadores possuem um preload scanner integrado que examina o HTML em busca de recursos para baixar antes que o parser principal os alcance. Se o seu <link> de stylesheet já estiver no <head>, o preload scanner o encontrará imediatamente. Adicionar uma dica rel="preload" para a mesma URL dá ao navegador informações que ele já possui. Você apenas adicionou uma linha extra, isso é tudo.

3 stylesheets com preload

3 stylesheets normais

Caso 2: fazendo o preload do stylesheet com um link header

Essa ideia é interessante. Podemos usar o header Link do servidor para fazer o preload de um stylesheet. Isso seria parecido com isso:

Link: <style.css>; rel=preload; as=style

A ideia é fazer com que o navegador coloque o stylesheet na fila antes de começar a fazer o parsing do HTML. Gosto de como funciona a mente de um desenvolvedor que pensou nisso! Mas, na vida real, você obterá muito pouco benefício. Estamos falando de alguns microssegundos. Resultados bem decepcionantes, mas essa ideia nos leva a algo que realmente funciona.

Caso 3: 103 Early Hints para stylesheets

Essa é a única ideia que realmente trará resultados no Core Web Vitals. Enviar early hints para stylesheets melhorará métricas como o First Contentful Paint e o Largest Contentful Paint.

Os headers 103 Early Hint são enviados antes da resposta HTML real. Isso significa que, enquanto você baixa o HTML, o navegador também pode começar a baixar os stylesheets em paralelo. O melhor cenário é que, no momento em que o HTML terminar de ser baixado, os stylesheets também terão sido baixados. Tempo zero de bloqueio de renderização desses stylesheets. Isso pode acontecer e acontece em redes mais lentas. Em redes mais rápidas, o efeito é menos óbvio, mas usar 103 Early Hints ainda é mais rápido em quase todos os casos.

Uma resposta 103 Early Hint se parece muito com um header de preload link. Para usar 103 Early Hints, você precisará configurar o seu servidor web ou a sua CDN.

HTTP/1.1 103 Early Hints
Link: </style.css>; rel=preload; as=style

Algumas CDNs, como a Cloudflare, permitirão que você acione um 103 Early Hint simplesmente definindo um header de link preload (conforme descrito no Caso 2). Para um guia completo sobre implementação e suporte de navegadores, veja 103 Early Hints: Faça o Preload de Recursos Críticos Durante o Tempo de Processamento do Servidor.

Em sites monitorados pelo CoreDash, as páginas que usam 103 Early Hints para o seu stylesheet principal mostram um FCP 120ms mais rápido no 75º percentil em comparação com páginas sem Early Hints. A melhoria é mais visível em conexões móveis, onde o tempo de processamento do servidor e a latência da rede se sobrepõem mais.

Caso 4: fazer o preload de stylesheets para obter um CSS assíncrono

Um truque muito conhecido para tornar o CSS não bloqueador de renderização é fazer o preload do stylesheet e, uma vez carregado, adicioná-lo à página. A ideia é simples e se parece com isso:

<link
   rel="preload"
   href="style.css"
   as="style"
   onload="this.onload=null;this.rel='stylesheet'"
>

É baseado no código normal de preload <link rel="preload" as="style" href="style.css"> e adiciona um ouvinte de evento onload onload="this.onload=null;this.rel='stylesheet'" que altera o link para a sua forma final <link rel="stylesheet" href="style.css">

Esta é outra ideia que simplesmente faz sentido. Se um stylesheet não estiver bloqueando a renderização, o navegador pode continuar a analisar e renderizar a página sem esperar pelo stylesheet. No entanto, tenha cuidado!

  • Não torne o CSS assíncrono na viewport visível. Isso provavelmente causará um Cumulative Layout Shift e isso levará a uma péssima user experience.
  • Considere o custo-benefício. O CSS assíncrono provavelmente causará uma nova renderização de diferentes partes da página. Isso impactará métricas como o Interaction to Next Paint.

Uma alternativa moderna mais simples é usar fetchpriority="low" em um link de stylesheet comum: <link rel="stylesheet" href="style.css" fetchpriority="low">. Isso diz ao navegador para despriorizar o download sem usar o hack de JavaScript. Recomendo isso no lugar do truque do onload para a maioria dos casos de uso.

Caso 5: pré-cachear stylesheets

Em raras ocasiões, vejo soluções engenhosas que tentam pré-aquecer os arquivos em cache para pageviews subsequentes. E embora eu aplauda o entusiasmo com o qual essas soluções são feitas: por favor, NÃO faça isso.

A ideia é simples: na página inicial, você poderia, se quisesse, já fazer o pré-cache dos estilos para outra página. Digamos, a página de produto. Em algum momento após o carregamento da página, você faria o preload de stylesheets para adicioná-los ao cache do navegador.

function preloadStylesheet(url) {
    var link = document.createElement('link');
    link.rel = 'preload';
    link.href = url;
    link.as = 'style';
    document.head.appendChild(link);
}

window.addEventListener('load', function () {
    preloadStylesheet('cart.css');
    preloadStylesheet('shop.css');
});

À primeira vista, isso não parece nada mal. Em qualquer página de produto, cart.css e shop.css agora estão disponíveis e não bloquearão mais a renderização. Existem algumas razões para não fazer isso:

  1. Existem maneiras melhores, por exemplo, o prerendering especulativo com Speculation Rules ou usando um service worker.
  2. Você provavelmente desperdiçará recursos e o custo-benefício não valerá a pena. Se fazer o preload de recursos fosse fácil, os navegadores seriam melhores nisso.
  3. Soluções como essa são difíceis de manter e provavelmente causarão problemas em algum momento no futuro.
  4. Você precisará fazer o preload de todos os stylesheets, não apenas de alguns. Como todos os stylesheets bloqueiam a renderização e são baixados em paralelo, apenas um stylesheet pode ter o mesmo efeito que múltiplos stylesheets.

O que realmente funciona para a performance do CSS

Em vez de recorrer a dicas de preload, concentre-se nestes fundamentos de priorização de recursos:

Em nossos dados de Real User Monitoring, sites que removem CSS redundante e usam 103 Early Hints passam consistentemente no LCP no 75º percentil. Sites que apenas fazem o preload de seus stylesheets sem resolver a causa raiz (muito CSS, carregado muito tarde) raramente veem uma melhoria significativa.

About the author

Arjen Karel is a web performance consultant and the creator of CoreDash, a Real User Monitoring platform that tracks Core Web Vitals data across hundreds of sites. He also built the Core Web Vitals Visualizer Chrome extension. He has helped clients achieve passing Core Web Vitals scores on over 925,000 mobile URLs.

I make sites pass Core Web Vitals.

500K+ pages for major European publishers and e-commerce platforms. I write the fixes and verify them with field data.

How I work
Quando o preload de stylesheets (não) faz sentidoCore Web Vitals Quando o preload de stylesheets (não) faz sentido