Visão geral
Antes que o navegador possa renderizar o conteúdo, ele precisa processar todas as informações de estilo e layout da página atual. Como resultado, o navegador bloqueará a renderização até que as folhas de estilo externas sejam transferidas por download e processadas, o que pode exigir várias viagens de ida e volta e atrasar a primeira renderização. Consulte construção, layout e pintura da árvore de renderização para saber mais sobre o caminho crítico de renderização, e renderizar bloqueio de CSS para dicas sobre como desbloquear a renderização e melhorar a exibição de CSS.Recomendações
Se os recursos de CSS externos forem pequenos, é possível inseri-los diretamente no documento HTML, um processo denominado inserção in-line. A inserção in-line de pequenos CSS permite ao navegador prosseguir com a renderização da página. Se o arquivo CSS for grande, a inserção in-line total do CSS poderá fazer com que o PageSpeed Insights notifique que a região acima da dobra na página é grande demais por meio da Priorização do conteúdo visível. No caso de um arquivo de CSS grande, será necessário identificar e inserir in-line o CSS necessário para renderizar o conteúdo acima da dobra e adiar o carregamento dos estilos restantes até o conteúdo acima da dobra ser processado.- Exemplo de inserção in-line de um pequeno arquivo CSS
- Não in-line em URIs de dados grandes
- Não inserir atributos CSS inline
Exemplo de inserção in-line de um pequeno arquivo CSS
Se o documento HTML tiver esta aparência:<html> <head> <link rel="stylesheet" href="small.css"> </head> <body> <div class="blue"> Hello, world! </div> </body> </html>
small.css
será assim:
.yellow {background-color: yellow;} .blue {color: blue;} .big { font-size: 8em; } .bold { font-weight: bold; }
<html> <head> <style> .blue{color:blue;} </style> </head> <body> <div class="blue"> Hello, world! </div> <noscript id="deferred-styles"> <link rel="stylesheet" type="text/css" href="small.css"/> </noscript> <script> var loadDeferredStyles = function() { var addStylesNode = document.getElementById("deferred-styles"); var replacement = document.createElement("div"); replacement.innerHTML = addStylesNode.textContent; document.body.appendChild(replacement) addStylesNode.parentElement.removeChild(addStylesNode); }; var raf = window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || window.msRequestAnimationFrame; if (raf) raf(function() { window.setTimeout(loadDeferredStyles, 0); }); else window.addEventListener('load', loadDeferredStyles); </script> </body> </html>
Essa transformação, incluindo a determinação de CSS crítico/não crítico, inline do CSS crítico e carregamento adiado de CSS não crítico, podem ser feitas automaticamente Módulos de otimização do PageSpeed para nginx, apache, IIS, ATS e Open Lightspeed, ao ativar filtro prioritize_critical_css.
Consulte também loadCSS para ajudar a carregar CSS de forma assíncrona, que pode funcionar com Crítico, uma ferramenta para extrair o CSS essencial de uma página da Web.
Os estilos essenciais necessários para estilizar o conteúdo acima da dobra são imediatamente inseridos in-line e aplicados ao documento. O small.css completo é carregado após a exibição inicial da página. Os estilos dele são aplicados à página assim que ela terminar de carregar, sem bloquear a renderização inicial do conteúdo essencial.
Em breve, a plataforma Web será compatível com o carregamento de folhas de estilo sem bloquear a renderização e sem ter que recorrer ao uso de JavaScript, usando importações em HTML.
Não inserir URIs com muitos dados in-line
Tenha cuidado ao realizar a inserção in-line de URIs de dados em arquivos CSS. Embora o uso seletivo de pequenos URIs de dados no CSS possa fazer sentido, a inserção in-line de URIs de dados muito grandes pode fazer com que o tamanho do CSS acima da dobra seja maior, o que diminuirá a velocidade de renderização da página.
Não inserir atributos CSS in-line
Atributos CSS inline em elementos HTML
(por exemplo, <p style=...>
) precisa ser evitado sempre que possível, porque isso geralmente leva à duplicação desnecessária de código.
Além disso, a inserção in-line de CSS em elementos HTML é bloqueada por padrão com
Política de Segurança de Conteúdo (CSP).
Feedback
Esta página foi útil?