{"id":44427,"date":"2021-10-01T15:13:44","date_gmt":"2021-10-01T13:13:44","guid":{"rendered":"https:\/\/kinsta.com\/?p=102244"},"modified":"2023-08-22T05:58:25","modified_gmt":"2023-08-22T08:58:25","slug":"otimizar-css","status":"publish","type":"post","link":"https:\/\/kinsta.com\/pt\/blog\/otimizar-css\/","title":{"rendered":"Como Otimizar o CSS para o M\u00e1ximo Desempenho do Site"},"content":{"rendered":"<p>Mesmo em 2021, o desempenho da web continua sendo um problema. De acordo com o HTTP Archive, a p\u00e1gina m\u00e9dia requer um <a href=\"https:\/\/httparchive.org\/reports\/page-weight?start=latest\" target=\"_blank\" rel=\"noopener noreferrer\">download de 2 MB<\/a>, faz mais de 60 solicita\u00e7\u00f5es HTTP, e pode levar <a href=\"https:\/\/httparchive.org\/reports\/loading-speed?start=latest\" target=\"_blank\" rel=\"noopener noreferrer\">18 segundos<\/a> para carregar em um dispositivo m\u00f3vel completamente. As folhas de estilo s\u00e3o respons\u00e1veis por 60 kB divididos em sete solicita\u00e7\u00f5es, ent\u00e3o raramente \u00e9 uma prioridade m\u00e1xima quando se tenta resolver problemas de desempenho.<\/p>\n<p>Entretanto, o CSS tem um efeito, por mais leve que possa parecer. Uma vez que voc\u00ea tenha endere\u00e7ado seu <a href=\"https:\/\/kinsta.com\/pt\/blog\/o-que-e-javascript\/\">JavaScript<\/a>, aprender a otimizar o CSS corretamente deve ser a pr\u00f3xima prioridade.<\/p>\n<p>Vamos direto ao assunto!<\/p>\n<div><\/div><kinsta-auto-toc heading=\"Table of Contents\" exclude=\"last\" list-style=\"arrow\" selector=\"h2\" count-number=\"-1\"><\/kinsta-auto-toc>\n<h2>Como o CSS afeta o desempenho da p\u00e1gina<\/h2>\n<p>O CSS parece inocente, mas pode exigir algum processamento pesado.<\/p>\n<h3>CSS de bloqueio de renderiza\u00e7\u00e3o<\/h3>\n<p>Quando seu navegador encontra uma tag <code>&lt;link&gt;<\/code>, ele interrompe o download e o processamento de outros navegadores enquanto recupera e analisa o arquivo CSS.<\/p>\n<p>O JavaScript tamb\u00e9m pode <a href=\"https:\/\/kinsta.com\/pt\/blog\/bloqueio-de-renderizacao-no-wordpress\/\">bloquear a renderiza\u00e7\u00e3o do navegador<\/a>, mas o processamento ass\u00edncrono \u00e9 poss\u00edvel com:<\/p>\n<ol>\n<li>O atributo <code>async<\/code> para download de scripts em paralelo, que s\u00e3o executados imediatamente, eles est\u00e3o prontos.<\/li>\n<li>O atributo <code>defer<\/code> para download em paralelo, ent\u00e3o executado em ordem quando o DOM estiver pronto.<\/li>\n<li>O atributo <code>type=\"module\"<\/code> para carregar um m\u00f3dulo ES (que se comporta como <code>defer<\/code>).<\/li>\n<\/ol>\n<p>Recursos como imagens muitas vezes requerem mais largura de banda, mas <a href=\"https:\/\/kinsta.com\/pt\/blog\/webp\/\">formatos eficientes est\u00e3o dispon\u00edveis<\/a>, e podem ser <a href=\"https:\/\/kinsta.com\/pt\/blog\/lazy-load-no-wordpress\/\">carregados de forma pregui\u00e7osa<\/a> (atributo <code>loading=\"lazy\"<\/code>) sem bloquear a renderiza\u00e7\u00e3o do navegador.<\/p>\n<p>Nada disso \u00e9 poss\u00edvel com o CSS. O arquivo \u00e9 armazenado em cache, portanto, o carregamento de p\u00e1ginas subseq\u00fcentes deve ser mais r\u00e1pido, mas o bloco de renderiza\u00e7\u00e3o permanece.<\/p>\n\n<h3>Grandes arquivos CSS levam tempo para serem processados<\/h3>\n<p>Quanto maior a sua folha de estilo, mais tempo leva para baixar e processar em um CSS Object Model (CSSOM), que o navegador e as APIs JavaScript podem usar para exibir a p\u00e1gina. Embora as folhas de estilo CSS sejam menores do que a maioria dos outros arquivos do site, elas n\u00e3o est\u00e3o imunes \u00e0 regra de &#8220;menor \u00e9 melhor&#8221;.<\/p>\n<h3>Os arquivos CSS ficam maiores<\/h3>\n<p>Pode ser dif\u00edcil identificar estilos que n\u00e3o s\u00e3o mais usados, e remover os errados pode causar estragos em um site. Os desenvolvedores normalmente optam pela abordagem mais segura de &#8220;reter tudo&#8221;. Os <a href=\"https:\/\/kinsta.com\/pt\/blog\/pacote-nao-pode-ser-instalado\/\">estilos de p\u00e1gina<\/a>, <a href=\"https:\/\/kinsta.com\/pt\/blog\/componentes-web\/\">componentes<\/a> e widgets que n\u00e3o s\u00e3o mais usados continuam a existir no CSS. O resultado? O tamanho do arquivo, a complexidade e o esfor\u00e7o de manuten\u00e7\u00e3o aumentam exponencialmente, tornando os desenvolvedores cada vez menos propensos a remover o c\u00f3digo redundante.<\/p>\n<h3>As folhas de estilo podem fazer refer\u00eancia a outros recursos<\/h3>\n<p>O CSS pode fazer refer\u00eancia a outras folhas de estilo usando @import rules. Estas importa\u00e7\u00f5es bloqueiam o processamento da folha de estilo atual e carregam outros arquivos CSS <strong>em s\u00e9rie<\/strong>.<\/p>\n<p>Outros ativos, tais como fontes e imagens, tamb\u00e9m podem ser referenciados. O navegador tentar\u00e1 otimizar os downloads, mas quando em d\u00favida, ele ir\u00e1 busc\u00e1-los imediatamente. Os arquivos codificados na base64 incorrem ainda em mais processamento.<\/p>\n<h3>Renderiza\u00e7\u00e3o de efeitos CSS<\/h3>\n<p>Os navegadores t\u00eam tr\u00eas <a href=\"https:\/\/kinsta.com\/pt\/blog\/caminho-de-renderizacao-critica\/\">fases de renderiza\u00e7\u00e3o<\/a>:<\/p>\n<ol>\n<li>A fase de <strong>layout<\/strong> (ou <strong>redesenho<\/strong>) calcula as dimens\u00f5es de cada elemento e como ele afeta o tamanho ou posicionamento dos elementos ao seu redor<\/li>\n<li>A fase <strong>paint\u00a0<\/strong>desenha as partes visuais de cada elemento em camadas separadas: texto, cores, imagens, bordas, sombras, etc.<\/li>\n<li>O <strong>composto <\/strong>desenha cada camada na p\u00e1gina na ordem correta de acordo com os contextos de empilhamento, posicionamento, \u00edndices z, etc.<\/li>\n<\/ol>\n<p>Se voc\u00ea n\u00e3o tiver cuidado, as mudan\u00e7as de propriedade e anima\u00e7\u00f5es do CSS podem fazer com que as tr\u00eas fases sejam renderizadas novamente. Algumas propriedades, tais como sombras e gradientes, tamb\u00e9m s\u00e3o computacionalmente mais caras do que cores e margens do bloco.<\/p>\n<h2>Ferramentas de an\u00e1lise de desempenho do CSS<\/h2>\n<p>Admitir que voc\u00ea tem um problema de desempenho do CSS \u00e9 o primeiro passo no caminho da recupera\u00e7\u00e3o! Encontrar e corrigir as causas \u00e9 outra quest\u00e3o.<\/p>\n<p>As seguintes ferramentas e servi\u00e7os (n\u00e3o classificados em nenhuma ordem) podem ajud\u00e1-lo a identificar gargalos de estilo em seu c\u00f3digo.<\/p>\n<h3>1. Painel da rede DevTools<\/h3>\n<p>Especialistas em desempenho Web passam um tempo consider\u00e1vel no <a href=\"https:\/\/kinsta.com\/pt\/blog\/ferramenta-inspecionar\/\">DevTools<\/a> e no painel da <strong>Rede<\/strong> em particular. DevTools \u00e9 nativo da <a href=\"https:\/\/kinsta.com\/pt\/participacao-mercado-navegadores-desktop\/\">maioria dos navegadores modernos<\/a>, embora n\u00f3s estaremos usando o Google Chrome em nossos exemplos.<\/p>\n<p>DevTools pode ser aberto no menu do navegador, normalmente em <strong>Mais ferramentas<\/strong> &gt; <strong>Ferramentas do desenvolvedor<\/strong>, ou atrav\u00e9s dos atalhos de teclado <strong>Ctrl | Cmd + Shift + I<\/strong> ou <strong>F12<\/strong>.<\/p>\n<p>Mude para a aba <strong>Network (Rede)<\/strong> e certifique-se de que a op\u00e7\u00e3o <strong>Disable cache<\/strong> esteja marcada para evitar que arquivos em cache afetem o relat\u00f3rio. Voc\u00ea tamb\u00e9m pode mudar a op\u00e7\u00e3o de estrangulamento para simular redes m\u00f3veis mais lentas.<\/p>\n<p>Atualize a p\u00e1gina para ver o gr\u00e1fico da queda d&#8217;\u00e1gua para download e processamento:<\/p>\n<figure style=\"width: 781px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/08\/network-waterfall.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/08\/network-waterfall.png\" alt=\"Painel da Rede DevTools.\" width=\"781\" height=\"635\"><\/a><figcaption class=\"wp-caption-text\">Painel da rede DevTools<\/figcaption><\/figure>\n<p>Qualquer barra longa \u00e9 motivo de preocupa\u00e7\u00e3o, mas voc\u00ea deve ser especialmente cauteloso com barras longas bloqueadas\/estagadas (mostradas em branco). Neste exemplo, a linha destacada e todas as linhas seguintes n\u00e3o puderam come\u00e7ar o download at\u00e9 que os arquivos CSS e JavaScript de renderiza\u00e7\u00e3o fossem processados no topo da p\u00e1gina HTML.<\/p>\n<p>A caixa <strong>Filtro <\/strong>permite que voc\u00ea mostre ou esconda ativos espec\u00edficos:<\/p>\n<ul>\n<li><code>larger-than:<em>&lt;S&gt;<\/em><s><\/s><\/code>: Limite para arquivos maiores que <em>&lt;S&gt;<\/em><s><\/s>, expresso como bytes (10.000), Kilobytes (1.000 kB), ou megabytes (1 M)<\/li>\n<li><code>-larger-than:&lt;S&gt;<\/code>: Limite para arquivos menores do que <em>&lt;S&gt;<\/em><s><\/s><\/li>\n<li><code>domain:*&lt;.yourdomain.com&gt;<\/code>: Mostrar pedidos de terceiros que n\u00e3o s\u00e3o carregados do seu dom\u00ednio principal. Estes s\u00e3o um grande contribuidor para sites lentos.<\/li>\n<\/ul>\n<p>Uma p\u00e1gina de alto desempenho com CSS otimizado normalmente tem menos ativos carregados em paralelo com barras curtas bloqueadas\/estagadas.<\/p>\n<h3>2. WebPageTest<\/h3>\n<p>O <a href=\"https:\/\/www.webpagetest.org\/\" target=\"_blank\" rel=\"noopener noreferrer\">WebPageTest<\/a> fornece uma vis\u00e3o similar da cascata da rede, assim como muitos outros gr\u00e1ficos de desempenho:<\/p>\n<figure style=\"width: 1023px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/08\/webpagetest.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/08\/webpagetest.png\" alt=\"WebPageTest.org cachoeira de ativos.\" width=\"1023\" height=\"667\"><\/a><figcaption class=\"wp-caption-text\">WebPageTest.org Cascata de Recursos.<\/figcaption><\/figure>\n<p>O servi\u00e7o usa dispositivos baseados em v\u00e1rios locais globais para que voc\u00ea possa avaliar o desempenho no mundo real e as otimiza\u00e7\u00f5es do CSS.<\/p>\n<h3>3. Painel Chrome DevTools Lighthouse<\/h3>\n<p>O painel do DevTools <strong>Lighthouse <\/strong>\u00e9 fornecido em navegadores baseados em Chromium como Chrome, Edge, Brave, Opera, e Vivaldi. Voc\u00ea pode gerar relat\u00f3rios de Desempenho, Aplicativos Web Progressivas, Melhores Pr\u00e1ticas, Acessibilidade e <a href=\"https:\/\/kinsta.com\/pt\/blog\/wordpress-seo\/\" target=\"_blank\" rel=\"noopener noreferrer\">Otimiza\u00e7\u00e3o de Sites de Busca<\/a> para dispositivos m\u00f3veis e desktop.<\/p>\n<figure style=\"width: 738px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/08\/lighthouse-performance.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/08\/lighthouse-performance.png\" alt=\"Painel do Farol DevTools.\" width=\"738\" height=\"787\"><\/a><figcaption class=\"wp-caption-text\">Painel DevTools Lighthouse.<\/figcaption><\/figure>\n<p>A ferramenta faz sugest\u00f5es de melhorias, incluindo formas de otimizar o CSS. Nem tudo pode ser pr\u00e1tico ou poss\u00edvel, mas os ganhos r\u00e1pidos mais ben\u00e9ficos s\u00e3o destacados.<\/p>\n<h3>4. Google PageSpeed Insights<\/h3>\n<p><a href=\"https:\/\/kinsta.com\/pt\/blog\/google-pagespeed-insights\/\" target=\"_blank\" rel=\"noopener noreferrer\">PageSpeed Insights<\/a> \u00e9 a vers\u00e3o on-line do Lighthouse. Ele tem menos recursos, mas pode ser usado em qualquer navegador e fornece algumas perspectivas alternativas.<\/p>\n<p>Por exemplo, um treemap mostra os maiores ativos JavaScript com uma m\u00e9trica de cobertura, que indica que propor\u00e7\u00e3o de c\u00f3digo \u00e9 utilizada e n\u00e3o utilizada:<\/p>\n<figure style=\"width: 1254px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/08\/pagespeed-treemap.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/08\/pagespeed-treemap.png\" alt=\"Google PageSpeed Insights treemap.\" width=\"1254\" height=\"967\"><\/a><figcaption class=\"wp-caption-text\">Google PageSpeed Insights treemap.<\/figcaption><\/figure>\n<p>O CSS n\u00e3o \u00e9 exibido, mas a quantidade de JavaScript ter\u00e1 uma influ\u00eancia na efici\u00eancia dos estilos.<\/p>\n<p><a href=\"https:\/\/kinsta.com\/pt\/blog\/teste-de-velocidade-do-seu-site\/#website-speed-test-tools\">Ferramentas similares de teste de velocidade do site<\/a> incluem o <a href=\"https:\/\/tools.pingdom.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">Pingdom Website Speed Test<\/a> e o <a href=\"https:\/\/kinsta.com\/pt\/blog\/teste-de-velocidade-gtmetrix\/\">GTmetrix<\/a>.<\/p>\n<h3>5. Painel de cobertura do DevTools<\/h3>\n<p>O painel de <strong>cobertura<\/strong> DevTools em navegadores baseados em Chromium que ajudam a localizar c\u00f3digo CSS (e JavaScript) n\u00e3o utilizado. Selecione <strong>Cobertura<\/strong> no submenu <strong>Mais ferramentas<\/strong> do DevTools, depois atualize sua p\u00e1gina e navegue em seu site\/aplicativo:<\/p>\n<figure style=\"width: 752px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/08\/coverage.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/08\/coverage.png\" alt=\"Painel de Cobertura DevTools.\" width=\"752\" height=\"793\"><\/a><figcaption class=\"wp-caption-text\">Painel de Cobertura DevTools.<\/figcaption><\/figure>\n<p>Os ativos CSS e JavaScript s\u00e3o mostrados no painel de <strong>cobertura <\/strong>, com a propor\u00e7\u00e3o de c\u00f3digo n\u00e3o utilizado em vermelho. Clique em qualquer arquivo para visualizar seu c\u00f3digo fonte com o c\u00f3digo n\u00e3o utilizado destacado em vermelho na sarjeta de n\u00famero de linha.<\/p>\n<p>Algumas coisas para tomar nota:<\/p>\n<ul>\n<li>A m\u00e9trica de cobertura \u00e9 redefinida se voc\u00ea atualizar ou navegar para uma nova p\u00e1gina, como \u00e9 t\u00edpico em um site WordPress. A m\u00e9trica do c\u00f3digo n\u00e3o utilizado s\u00f3 diminuir\u00e1 se voc\u00ea estiver navegando em um aplicativo de p\u00e1gina \u00fanica que carrega conte\u00fado sem uma atualiza\u00e7\u00e3o da p\u00e1gina.<\/li>\n<li>A ferramenta s\u00f3 pode contabilizar o CSS usado at\u00e9 um determinado momento. Ela n\u00e3o pode determinar se um widget n\u00e3o foi visualizado ou se tem m\u00faltiplos estados vinculados ao JavaScript.<\/li>\n<\/ul>\n<h3>6. Monitor de desempenho em tempo real do Chrome DevTools<\/h3>\n<p>Os navegadores baseados em Chromium\u00a0t\u00eam um Monitor de Desempenho em tempo real. Novamente, isto est\u00e1 dispon\u00edvel no menu <strong>Mais ferramentas<\/strong> do DevTools. Os gr\u00e1ficos s\u00e3o atualizados enquanto voc\u00ea navega na p\u00e1gina e aciona as anima\u00e7\u00f5es:<\/p>\n<figure style=\"width: 750px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/08\/performance-monitor.png\"><img loading=\"lazy\" decoding=\"async\" class=\" size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/08\/performance-monitor.png\" alt=\"DevTools Monitor de Desempenho em Tempo Real.\" width=\"750\" height=\"312\"><\/a><figcaption class=\"wp-caption-text\">DevTools Monitor de Desempenho em Tempo Real<\/figcaption><\/figure>\n<p>As seguintes m\u00e9tricas s\u00e3o de particular interesse para otimizar o desempenho do CSS (quanto mais baixo, melhor):<\/p>\n<ul>\n<li><strong>Uso de CPU: <\/strong>Utiliza\u00e7\u00e3o do processador de 0% a 100%.<\/li>\n<li><strong>Layouts\/segundo:<\/strong>A velocidade na qual o navegador deve dispor a p\u00e1gina.<\/li>\n<li><strong>Rec\u00e1lculos de estilo\/segundo: <\/strong>A taxa na qual o navegador tem que recalcular os estilos.<\/li>\n<\/ul>\n<p>As outras m\u00e9tricas tamb\u00e9m podem ser \u00fateis se o CSS estiver lutando devido a fatores externos (novamente, valores mais baixos indicam melhor desempenho):<\/p>\n<ul>\n<li><strong>Tamanho do JS heap: <\/strong>A mem\u00f3ria total usada pelos objetos JavaScript.<\/li>\n<li><strong>DOM Nodes: <\/strong>O n\u00famero de elementos no documento <a href=\"https:\/\/kinsta.com\/pt\/blog\/melhores-praticas-html\/\">HTML<\/a>.<\/li>\n<li><strong>Ouvintes do evento JS: <\/strong>O n\u00famero de ouvintes de eventos JavaScript registrados.<\/li>\n<li><strong>Documentos: <\/strong>O n\u00famero de recursos, incluindo a p\u00e1gina, arquivos CSS, m\u00f3dulos JavaScript, etc.<\/li>\n<li><strong>Documentos frames: <\/strong>O n\u00famero de quadros, iframes e scripts de trabalho em JavaScript.<\/li>\n<\/ul>\n<h3>7. Relat\u00f3rio de desempenho DevTools<\/h3>\n<p>O painel de <strong>Performance<\/strong> DevTools permite que voc\u00ea registre as atividades da p\u00e1gina para an\u00e1lise posterior e ajude a identificar problemas de performance. Os relat\u00f3rios gerados s\u00e3o complexos, e muitos desenvolvedores os evitam, mas eles fornecem informa\u00e7\u00f5es valiosas.<\/p>\n<p>O \u00edcone de configura\u00e7\u00f5es do painel de desempenho permite que voc\u00ea defina v\u00e1rias op\u00e7\u00f5es, tais como diminuir a velocidade da rede e do CPU. Voc\u00ea tamb\u00e9m pode desativar amostras JavaScript para que as pilhas de chamadas detalhadas n\u00e3o sejam gravadas.<\/p>\n<p>Para come\u00e7ar, clique no \u00edcone circular <strong>Record<\/strong>, carregue e\/ou use sua p\u00e1gina, depois clique no bot\u00e3o <strong>Stop<\/strong> para ver o relat\u00f3rio:<\/p>\n<figure style=\"width: 673px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/08\/performance-report.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/08\/performance-report.png\" alt=\"Relat\u00f3rio de Desempenho DevTools.\" width=\"673\" height=\"848\"><\/a><figcaption class=\"wp-caption-text\">Relat\u00f3rio de Desempenho DevTools.<\/figcaption><\/figure>\n<p>Quase todas essas m\u00e9tricas ser\u00e3o \u00fateis para desenvolvedores JavaScript, mas os problemas de otimiza\u00e7\u00e3o do CSS podem ser especialmente evidentes:<\/p>\n<ul>\n<li><strong>Barra vermelha superior: <\/strong>Isto indica que a taxa de quadros caiu significativamente, o que pode estar causando problemas de desempenho. Isto \u00e9 esperado no in\u00edcio do careegamento de uma p\u00e1gina, mas anima\u00e7\u00f5es CSS excessivas tamb\u00e9m podem ser um problema.<\/li>\n<li><strong>Gr\u00e1fico de resumo: <\/strong>O alto carregamento, renderiza\u00e7\u00e3o e m\u00e9tricas de pintura podem indicar problemas de CSS.<\/li>\n<\/ul>\n<h2>Corre\u00e7\u00f5es indiretas de desempenho do CSS<\/h2>\n<p>As corre\u00e7\u00f5es a seguir n\u00e3o abordar\u00e3o diretamente os problemas do CSS, mas podem ajud\u00e1-lo a resolver alguns problemas de desempenho com relativamente pouco esfor\u00e7o.<\/p>\n<h3>Use uma boa hospedagem de sites<\/h3>\n<p>Usar uma boa hospedagem de sites com servidores fisicamente mais pr\u00f3ximos de seus usu\u00e1rios trar\u00e1 benef\u00edcios imediatos de desempenho. Os planos de hospedagem variam, mas existem tr\u00eas tipos principais:<\/p>\n<ol>\n<li><strong>Hospedagem compartilhada: <\/strong>Seu site est\u00e1 hospedado em um servidor f\u00edsico, possivelmente ao lado de centenas de outros sites. Espa\u00e7o em disco, RAM, tempo de CPU e largura de banda s\u00e3o compartilhados. Os planos s\u00e3o frequentemente baratos, mas o desempenho e a disponibilidade s\u00e3o afetados por outros sites. A atualiza\u00e7\u00e3o pode ser poss\u00edvel, mas seu site geralmente permanecer\u00e1 na mesma infraestrutura.<\/li>\n<li><strong>Hospedagem dedicada: <\/strong>Seu site \u00e9 hospedado em um ou mais servidores f\u00edsicos que voc\u00ea possui. O hardware pode ser configurado e atualizado de acordo com os requisitos. Os planos s\u00e3o freq\u00fcentemente caros e as falhas de hardware continuam sendo problem\u00e1ticas.<\/li>\n<li><strong>Hospedagem em nuvem: <\/strong>A <a href=\"https:\/\/kinsta.com\/pt\/blog\/plataforma-de-nuvem-para-desenvolvedores\/\">hospedagem em nuvem<\/a> resume a infraestrutura de hardware em um conjunto de servi\u00e7os que podem ser acessados on-demand. Seu site pode ser provisionado em uma variedade de dispositivos para facilitar as atualiza\u00e7\u00f5es.<\/li>\n<\/ol>\n<p>Os planos e pre\u00e7os da hospedagem em nuvem variam enormemente. Voc\u00ea poderia considerar:<\/p>\n<ol>\n<li>Op\u00e7\u00f5es de <a href=\"https:\/\/kinsta.com\/pt\/blog\/o-que-e-paas\/\">Plataforma como Servi\u00e7o (PaaS)<\/a>, tais como servidores web virtuais e bancos de dados, ou<\/li>\n<li>Op\u00e7\u00f5es de <a href=\"https:\/\/kinsta.com\/pt\/blog\/produtos-saas\/\">Software como Servi\u00e7o (SaaS)<\/a>, que oferecem <a href=\"https:\/\/kinsta.com\/pt\/\">aplicativos totalmente gerenciados, como o WordPress<\/a>.<\/li>\n<\/ol>\n<p>A troca de hospedagem pode aumentar o desempenho. \u00c9 pouco prov\u00e1vel que resolva todos os seus problemas, mas \u00e9 uma solu\u00e7\u00e3o econ\u00f4mica para problemas de back-end e largura de banda.<\/p>\n<p>Voc\u00ea tamb\u00e9m pode considerar o uso de uma <a href=\"https:\/\/kinsta.com\/pt\/blog\/cdn-para-wordpress\/\">content delivery network (CDN)<\/a> ou CDN de imagem e v\u00eddeo especializado que possa distribuir a carga por v\u00e1rios locais geograficamente mais pr\u00f3ximos dos usu\u00e1rios.<\/p>\n<h3>Alavancar as funcionalidades de efici\u00eancia dos navegadores e servidores<\/h3>\n<p>Cerca de 10% dos sites n\u00e3o ativam a compress\u00e3o gzip (ou melhor), que normalmente \u00e9 a op\u00e7\u00e3o padr\u00e3o do servidor. Isto reduz o tamanho do CSS em 60% ou mais atrav\u00e9s da compress\u00e3o de arquivos antes da transmiss\u00e3o. Ele n\u00e3o consertar\u00e1 CSS ineficiente, mas o c\u00f3digo chegar\u00e1 mais cedo!<\/p>\n<p>Voc\u00ea tamb\u00e9m deve <a href=\"https:\/\/kinsta.com\/pt\/aprenda\/http2\/\">ativar o HTTP\/2<\/a> (ou melhor), que envia os dados em um formato bin\u00e1rio menor, comprime os cabe\u00e7alhos e pode enviar mais de um arquivo na mesma conex\u00e3o TCP.<\/p>\n<p>Finalmente, assegure-se de que o navegador possa armazenar CSS e outros arquivos de forma eficaz. Isto geralmente \u00e9 uma quest\u00e3o de configura\u00e7\u00e3o <a href=\"https:\/\/www.w3.org\/Protocols\/rfc2616\/rfc2616-sec14.html#sec14.21\" target=\"_blank\" rel=\"noopener noreferrer\">Expires<\/a>, <a href=\"https:\/\/www.w3.org\/Protocols\/rfc2616\/rfc2616-sec14.html#sec14.29\" target=\"_blank\" rel=\"noopener noreferrer\">Last-Modified<\/a> e\/ou <a href=\"https:\/\/en.wikipedia.org\/wiki\/HTTP_ETag\" target=\"_blank\" rel=\"noopener noreferrer\">ETag hashes<\/a> no cabe\u00e7alho HTTP.<\/p>\n<h3>Otimize o seu CMS<\/h3>\n<p><a href=\"https:\/\/kinsta.com\/pt\/blog\/softwares-cms\/\">Sistemas de Gerenciamento de Conte\u00fado<\/a> como o WordPress podem ser estendidos com temas e plugins que servem seus pr\u00f3prios CSS. Sempre que poss\u00edvel, voc\u00ea deve <a href=\"https:\/\/kinsta.com\/pt\/ebooks\/wordpress\/acelerar-o-seu-site-wordpress\/\">acelerar o seu CMS<\/a> para:<\/p>\n<ol>\n<li>Remova os plugins n\u00e3o utilizados.<\/li>\n<li>Use temas mais enxutos<\/li>\n<li>Habilite o <a href=\"https:\/\/kinsta.com\/pt\/blog\/o-que-e-cache\/\" target=\"_blank\" rel=\"noopener noreferrer\">cache<\/a> para evitar a regenera\u00e7\u00e3o excessiva de p\u00e1ginas.<\/li>\n<\/ol>\n<h3>Otimize suas imagens<\/h3>\n<p>As imagens n\u00e3o t\u00eam o mesmo processamento e renderiza\u00e7\u00e3o que o HTML, CSS e JavaScript, mas s\u00e3o respons\u00e1veis por uma grande propor\u00e7\u00e3o do peso da p\u00e1gina e da largura de banda utiliz\u00e1vel. Considere:<\/p>\n<ol>\n<li>Remover imagens desnecess\u00e1rias.<\/li>\n<li>Redimensionar imagens grandes &#8211; talvez para n\u00e3o mais do que 150% do tamanho m\u00e1ximo que elas podem aparecer na tela.<\/li>\n<li>Usar um <a href=\"https:\/\/kinsta.com\/pt\/blog\/tipos-arquivo-imagem\/\">formato de imagem apropriado<\/a> &#8211; idealmente uma op\u00e7\u00e3o altamente comprimida como <a href=\"https:\/\/kinsta.com\/pt\/blog\/webp\/\">WebP<\/a> ou AVIF, mas possivelmente <a href=\"https:\/\/kinsta.com\/pt\/blog\/o-que-e-um-arquivo-svg\/\">SVG<\/a> para logotipos e gr\u00e1ficos.<\/li>\n<li>Substituir as imagens por gradientes CSS ou outros efeitos.<\/li>\n<li>Adicionar atributos de largura e altura ao HTML <code><img>&lt;img&gt;<\/code> ou usando a nova <a href=\"https:\/\/developer.mozilla.org\/docs\/Web\/CSS\/aspect-ratio\" target=\"_blank\" rel=\"noopener noreferrer\">propriedade CSS aspect-ratio<\/a> para garantir que o espa\u00e7o apropriado seja reservado na p\u00e1gina antes do download da imagem.<\/li>\n<\/ol>\n<p>Um CDN de imagem especializado pode lidar com alguns destes trabalhos para voc\u00ea. Para mais dicas, confira nosso guia sobre como <a href=\"https:\/\/kinsta.com\/pt\/blog\/otimizar-imagens-para-web\/\">otimizar imagens para a web<\/a>.<\/p>\n<h3>Remova o CSS n\u00e3o utilizado<\/h3>\n<p>Os estilos mais r\u00e1pidos s\u00e3o aqueles que voc\u00ea nunca precisa carregar ou renderizar! Tente <a href=\"https:\/\/kinsta.com\/pt\/blog\/css-wordpress\/\">remover\/editar qualquer c\u00f3digo CSS<\/a> que voc\u00ea n\u00e3o precisa mais, como o de p\u00e1ginas antigas, widgets ou frameworks. Isto pode ser dif\u00edcil em sites maiores, e nem sempre \u00e9 claro se um conjunto particular de estilos \u00e9 essencial ou n\u00e3o.<\/p>\n<p>As seguintes ferramentas analisam o uso de HTML e CSS em tempo de compila\u00e7\u00e3o ou rastreando URLs para identificar c\u00f3digo redundante. Isto nem sempre \u00e9 adequado, ent\u00e3o configura\u00e7\u00f5es adicionais podem ser definidas para garantir que os estilos acionados pelo JavaScript e intera\u00e7\u00f5es do usu\u00e1rio sejam permitidas listadas:<\/p>\n<ul>\n<li><a href=\"https:\/\/github.com\/uncss\/uncss\" target=\"_blank\" rel=\"noopener noreferrer\">UnCSS<\/a><\/li>\n<li><a href=\"https:\/\/unused-css.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">UnusedCSS<\/a><\/li>\n<li><a href=\"https:\/\/purgecss.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">PurgeCSS<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/purifycss\/purifycss\" target=\"_blank\" rel=\"noopener noreferrer\">PurifyCSS<\/a><\/li>\n<\/ul>\n<p>H\u00e1 uma op\u00e7\u00e3o melhor: Dividir o CSS em arquivos separados com n\u00edveis claros de responsabilidade e documentar de acordo. A remo\u00e7\u00e3o de estilos desnecess\u00e1rios torna-se ent\u00e3o consideravelmente mais f\u00e1cil.<\/p>\n<h2>Otimizar o desempenho do carregamento CSS<\/h2>\n<p>Nem todo CSS \u00e9 carregado igualmente. A humilde tag <code>&lt;link&gt;<\/code>tem uma s\u00e9rie de op\u00e7\u00f5es e caprichos que nem sempre s\u00e3o l\u00f3gicos.<\/p>\n<h3>Otimize o uso da fonte Web<\/h3>\n<p>As <a href=\"https:\/\/kinsta.com\/pt\/blog\/melhores-fontes-google\/\">fontes do Google<\/a> e fundi\u00e7\u00f5es de fontes similares revolucionaram as <a href=\"https:\/\/kinsta.com\/pt\/blog\/html-fontes\/\">fontes da web<\/a>, mas algumas linhas de c\u00f3digo de fontes podem incorrer em centenas de kilobytes de largura de banda.<\/p>\n<p>Aqui est\u00e3o nossas sugest\u00f5es de otimiza\u00e7\u00e3o:<\/p>\n<ol>\n<li><strong>Carregue apenas as fontes que voc\u00ea precisa: <\/strong>Remova as fontes que voc\u00ea n\u00e3o est\u00e1 usando e verifique se novas fontes s\u00e3o necess\u00e1rias.<\/li>\n<li><strong>Carregue apenas os pesos e estilos que voc\u00ea precisa: <\/strong>A maioria das fundi\u00e7\u00f5es de fontes pode limitar o download a certos conjuntos de caracteres (como o latim apenas), pesos (espessuras) e it\u00e1lico (obl\u00edquas). Os navegadores podem auto-renderizar estilos ausentes, embora os resultados possam ser pobres.<\/li>\n<li><strong>Limite os caracteres necess\u00e1rios:<\/strong> As fontes <strong>pouco usadas<\/strong> podem ser restritas a caracteres espec\u00edficos. Por exemplo, o t\u00edtulo &#8220;CSS tutorial&#8221; em Open Sans pode ser definido adicionando um par\u00e2metro <code>&text=<\/code> \u00e0 query string das fontes do Google: <code>fonts.googleapis.com\/css?family=Open+Sans&text=CStuorial<\/code><\/li>\n<li><strong>Considere as fontes vari\u00e1veis: <\/strong>As fontes vari\u00e1veis definem uma grande variedade de estilos, pesos e it\u00e1lico usando interpola\u00e7\u00e3o vetorial. O arquivo da fonte \u00e9 um pouco maior, mas voc\u00ea precisa apenas de uma ao inv\u00e9s de v\u00e1rias. A <a href=\"https:\/\/www.recursive.design\/\" target=\"_blank\" rel=\"noopener noreferrer\">fonte recursiva<\/a> demonstra a flexibilidade das fontes vari\u00e1veis.<\/li>\n<li><strong>Carregue as fontes a partir do seu servidor local: <\/strong><a href=\"https:\/\/kinsta.com\/pt\/blog\/fontes-locais\/\" target=\"_blank\" rel=\"noopener noreferrer\">As fontes auto-hospedadas<\/a> s\u00e3o mais eficientes do que usar uma fundi\u00e7\u00e3o. Menos pesquisas DNS s\u00e3o necess\u00e1rias e voc\u00ea pode restringir o download para <a href=\"https:\/\/caniuse.com\/woff2\" target=\"_blank\" rel=\"noopener noreferrer\">WOFF2, que todos os navegadores modernos suportam<\/a>. Navegadores mais antigos (estou olhando para voc\u00ea IE) podem cair de volta para uma fonte OS.<\/li>\n<li><strong>Considere as fontes do sistema operacional: <\/strong>Essa fonte web de 500 kB pode parecer \u00f3tima, mas algu\u00e9m notaria se voc\u00ea mudasse para a Helvetica, Arial, Ge\u00f3rgia ou Verdana, comumente dispon\u00edveis? As <a href=\"https:\/\/kinsta.com\/pt\/blog\/fontes-seguras-na-web\/\">fontes OS ou web-safe<\/a> s\u00e3o uma maneira f\u00e1cil de aumentar o desempenho.<\/li>\n<\/ol>\n<h3>Use uma op\u00e7\u00e3o apropriada de carregamento de fontes<\/h3>\n<p>As fontes Web podem levar alguns segundos para serem baixadas e processadas. O navegador tamb\u00e9m n\u00e3o o far\u00e1:<\/p>\n<ol>\n<li><strong>Exibem um flash de texto sem estilo (FOUT &#8211; Flash of Unstyled Text): <\/strong>A primeira fonte dispon\u00edvel \u00e9 usada inicialmente, mas \u00e9 substitu\u00edda quando a fonte da web est\u00e1 pronta.<\/li>\n<li><strong>Exibem um flash de texto invis\u00edvel (FOIT &#8211; Flash of Invisible Text): <\/strong>Nenhum texto \u00e9 exibido at\u00e9 que a fonte da web esteja pronta. Este \u00e9 o processo padr\u00e3o nos navegadores modernos, que normalmente esperam tr\u00eas segundos antes de reverter para uma fonte fallback.<\/li>\n<\/ol>\n<p>Nenhum dos dois \u00e9 ideal. A propriedade CSS <a href=\"https:\/\/developer.mozilla.org\/docs\/Web\/CSS\/@font-face\/font-display\" target=\"_blank\" rel=\"noopener noreferrer\">font-display<\/a> e Google Font &#038; display = par\u00e2metro pode selecionar uma op\u00e7\u00e3o alternativa:<\/p>\n<ul>\n<li><strong>auto:<\/strong> O comportamento padr\u00e3o do navegador (geralmente FOIT).<\/li>\n<li><strong>block:<\/strong> Efetivamente FOIT. O texto \u00e9 invis\u00edvel por at\u00e9 tr\u00eas segundos. N\u00e3o h\u00e1 troca de fonte, mas o texto pode levar tempo para aparecer.<\/li>\n<li><strong>swap:<\/strong> FOUT (FOUT) efetivo. O primeiro retorno \u00e9 usado at\u00e9 que a fonte da web esteja dispon\u00edvel. O texto \u00e9 imediatamente leg\u00edvel, mas o efeito de troca de fonte pode ser jarrante. O <a href=\"https:\/\/meowni.ca\/font-style-matcher\/\" target=\"_blank\" rel=\"noopener noreferrer\">Font Style Matcher<\/a> pode ser usado para definir um fallback de tamanho semelhante.<\/li>\n<li><strong>fallback:<\/strong> Um compromisso entre FOIT e FOUT. O texto \u00e9 invis\u00edvel por um curto per\u00edodo (normalmente 100 ms), ent\u00e3o o primeiro fallback \u00e9 usado at\u00e9 que a fonte da web esteja dispon\u00edvel.<\/li>\n<li><strong>optional:<\/strong> Similar ao fallback, exceto que n\u00e3o ocorre troca de fonte. A fonte web s\u00f3 ser\u00e1 usada se estiver dispon\u00edvel dentro do per\u00edodo inicial. Sua primeira visualiza\u00e7\u00e3o de p\u00e1gina provavelmente mostrar\u00e1 uma fonte fallback, com visualiza\u00e7\u00f5es subsequentes usando a fonte web baixada e em cache.<\/li>\n<\/ul>\n<p>Usando swap, fallback, ou optional pode oferecer um aumento de desempenho percebido.<\/p>\n<h3>Evite CSS @import<\/h3>\n<p>O <a href=\"https:\/\/developer.mozilla.org\/docs\/Web\/CSS\/@import\" target=\"_blank\" rel=\"noopener noreferrer\">@import at-rule<\/a> permite que arquivos CSS sejam inclu\u00eddos dentro de outros:<\/p>\n<pre><code class=\"language-css\">\/* main.css *\/\n@import url(\"reset.css\");\n@import url(\"grid.css\");\n@import url(\"widget.css\");<\/code><\/pre>\n<p>Esta parece ser uma maneira eficaz de carregar componentes e fontes menores. Infelizmente, cada @import \u00e9 render-blocking, e cada arquivo deve ser carregado e analisado em s\u00e9rie.<\/p>\n<p>M\u00faltiplas tags <code>&lt;link&gt;<\/code>dentro do HTML \u00e9 mais eficiente e carrega arquivos CSS em paralelo:<\/p>\n<pre><code class=\"language-html\">&lt;link rel=\"stylesheet\" href=\"reset.css\"&gt;\n&lt;link rel=\"stylesheet\" href=\"grid.css\"&gt;\n&lt;link rel=\"stylesheet\" href=\"widget.css\"&gt;<\/code><\/pre>\n<p>Dito isto, \u00e9 melhor..<\/p>\n<h3>Concatenar e minimizar o CSS<\/h3>\n<p>Ferramentas de constru\u00e7\u00e3o modernas, pr\u00e9-processadores CSS como Sass e <a href=\"https:\/\/kinsta.com\/pt\/blog\/combinar-css-externo\/\">plugins WordPress podem combinar todas as parciais em um grande arquivo CSS<\/a>. Espa\u00e7o em branco desnecess\u00e1rio, coment\u00e1rios e caracteres s\u00e3o ent\u00e3o removidos para reduzir o tamanho do arquivo a um m\u00ednimo.<\/p>\n<p>M\u00faltiplos arquivos s\u00e3o menos problemas de desempenho com HTTP\/2 e <a href=\"https:\/\/kinsta.com\/pt\/blog\/http3\/\">superiores<\/a>, mas um \u00fanico arquivo requer apenas um cabe\u00e7alho e pode ser gzipado e armazenado em cache de forma mais eficiente.<\/p>\n<p>Arquivos CSS separados s\u00f3 s\u00e3o pr\u00e1ticos quando voc\u00ea tem uma ou mais folhas de estilo que s\u00e3o trocadas com freq\u00fc\u00eancia &#8211; talvez v\u00e1rias vezes por semana. Mesmo assim, a maioria dos c\u00f3digos CSS est\u00e1ticos ainda podem ser combinados em um \u00fanico arquivo.<\/p>\n<p>Os <a href=\"https:\/\/kinsta.com\/pt\/precos\/?plan=visits-business1\">clientes Kinsta<\/a> podem acessar o <a href=\"https:\/\/kinsta.com\/pt\/docs\/hospedagem-de-wordpress\/cdn-wordpress\/cdn-kinsta\/#code-minification-1\">recurso de minifica\u00e7\u00e3o de c\u00f3digo<\/a> em seu <a href=\"https:\/\/kinsta.com\/pt\/mykinsta\/\">painel MyKinsta<\/a> para ajudar com isso. O recurso permite que os clientes ativem a minifica\u00e7\u00e3o autom\u00e1tica CSS e JavaScript com um simples clique. Isto ajuda a acelerar um site com zero esfor\u00e7o de trabalho manual.<\/p>\n<h3>Evite a codifica\u00e7\u00e3o Base64<\/h3>\n<p><a href=\"https:\/\/jpillora.com\/base64-encoder\/\" target=\"_blank\" rel=\"noopener noreferrer\">As ferramentas podem codificar imagens para as strings base64<\/a>, que voc\u00ea pode usar como dados URIs em HTML <code><img>&lt;img&gt;<\/code> tags e background CSS:<\/p>\n<pre><code class=\"language-css\">.background {\n  fundo-imagem: url('data:image\/jpg;base64,ABC123...');\n}<\/code><\/pre>\n<p>Isso reduz o n\u00famero de solicita\u00e7\u00f5es HTTP, mas prejudica o desempenho do CSS:<\/p>\n<ul>\n<li>as strings base64 podem ser 30% maiores do que seu equivalente bin\u00e1rio.<\/li>\n<li>os navegadores devem decodificar as strings antes que uma imagem possa ser usada, e<\/li>\n<li>alterar um pixel de imagem invalida todo o arquivo CSS.<\/li>\n<\/ul>\n<p>Somente considere a codifica\u00e7\u00e3o base64 se voc\u00ea estiver usando imagens muito pequenas, que mudam pouco frequentemente, onde a string resultante n\u00e3o \u00e9 significativamente maior do que uma URL.<\/p>\n<p>Dito isto, voc\u00ea pode codificar \u00edcones SVG reutiliz\u00e1veis em UTF8, por exemplo<\/p>\n<pre><code class=\"language-css\">.svgbackground {\n  fundo-imagem: url('data:image\/svg+xml;utf8,');\n}<\/code><\/pre>\n<h3>Remover hacks CSS e Fallbacks IE<\/h3>\n<p>A menos que voc\u00ea seja infeliz e tenha uma alta propor\u00e7\u00e3o de usu\u00e1rios do Internet Explorer, as folhas de estilo e hacks condicionais do IE podem ser removidos do seu CSS. Na maioria dos casos, os usu\u00e1rios do IE ainda ver\u00e3o <em>algo<\/em>, especialmente se voc\u00ea usar um design mobile-first que mostra uma vis\u00e3o linear mais simples por padr\u00e3o. O resultado pode n\u00e3o ser bonito, e n\u00e3o ser\u00e1 perfeito, mas seu or\u00e7amento de desenvolvimento \u00e9 melhor gasto considerando a acessibilidade para todos os usu\u00e1rios.<\/p>\n<h3>Pr\u00e9-carregamento de arquivos CSS<\/h3>\n<p>A tag <code>&lt;link&gt;<\/code> fornece um <a href=\"https:\/\/developer.mozilla.org\/docs\/Web\/HTML\/Preloading_content\">atributo opcional de pr\u00e9-carregamento<\/a>\u00a0que pode iniciar um download imediatamente ao inv\u00e9s de esperar pela refer\u00eancia real no HTML:<\/p>\n<pre><code class=\"language-html\">&lt;!DOCTYPE html&gt;\n&lt;html lang=\"en\"&gt;\n&lt;head&gt;\n  &lt;meta charset=\"UTF-8\"&gt;\n  &lt;title&gt;My page&lt;\/title&gt;\n  &lt;!-- preload styles --&gt;\n  &lt;link rel=\"preload\" href=\"\/css\/main.css\" as=\"style\" \/&gt;\n  &lt;!-- lots more code --&gt;\n  &lt;!-- load preloaded styles --&gt;\n  &lt;link rel=\"stylesheet\" href=\"\/css\/main.css\" \/&gt;<\/code><\/pre>\n<p>Isto \u00e9 especialmente ben\u00e9fico no WordPress e em outros CMS onde um plugin poderia adicionar uma folha de estilo mais abaixo na p\u00e1gina.<\/p>\n<h3>Use o CSS Inline cr\u00edtico<\/h3>\n<p>As ferramentas de an\u00e1lise podem sugerir que voc\u00ea &#8220;inline critical CSS&#8221; ou &#8220;reduza as folhas de estilo de render-blocking&#8221; Isto melhora o desempenho por:<\/p>\n<ol>\n<li>Identificando os estilos essenciais usados pelos elementos acima da dobra (aqueles vis\u00edveis quando a p\u00e1gina \u00e9 carregada)<\/li>\n<li>Colocando aquele CSS cr\u00edtico em um <code>&lt;style&gt;<\/code> etiqueta em sua <code>&lt;head&gt;<\/code><\/li>\n<li>Carregando o CSS restante de forma ass\u00edncrona para evitar o bloqueio. Isto pode ser feito carregando a folha de estilo em um estilo &#8220;imprimir&#8221; que o navegador d\u00e1 uma prioridade menor. O JavaScript ent\u00e3o muda para um estilo de m\u00eddia &#8220;todo&#8221; uma vez que a p\u00e1gina tenha sido carregada (um <code>&lt;noscript&gt;<\/code> assegura que o CSS funcione \u00e9 JavaScript n\u00e3o est\u00e1 dispon\u00edvel):<\/li>\n<\/ol>\n<pre><code class=\"language-html\">&lt;style&gt;\n\/* critical styles *\/\nbody { font-family: sans-serif; color: #111; }\n&lt;\/style&gt;\n&lt;!-- load remaining styles --&gt;\n&lt;link rel=\"stylesheet\" \n     href=\"\/css\/main.css\"\n    media=\"print\" \n   onload=\"this.media='all'\"&gt;\n&lt;noscript&gt;\n  &lt;link rel=\"stylesheet\" href=\"\/css\/main.css\"&gt;\n&lt;\/noscript&gt;<\/code><\/pre>\n<p>Ferramentas como o <a href=\"https:\/\/github.com\/addyosmani\/critical\">critical<\/a> e o <a href=\"https:\/\/github.com\/filamentgroup\/criticalCSS\">criticalCSS<\/a> podem ajudar a extrair estilos para os elementos em visualiza\u00e7\u00e3o.<\/p>\n<p>A t\u00e9cnica melhora notavelmente o desempenho e aumenta a pontua\u00e7\u00e3o das auditorias. Sites ou aplicativos com interfaces consistentes deveriam ser mais simples de implementar, mas pode ser mais dif\u00edcil em outros lugares:<\/p>\n<ul>\n<li>Uma ferramenta de constru\u00e7\u00e3o \u00e9 essencial para todos, exceto para os sites mais simples.<\/li>\n<li>A &#8220;dobra&#8221; \u00e9 diferente em cada dispositivo.<\/li>\n<li>Os sites podem ter uma variedade de layouts que requerem diferentes CSS cr\u00edticos.<\/li>\n<li>Ferramentas CSS cr\u00edticas podem ter dificuldades com frameworks espec\u00edficos, HTML gerado do lado do cliente e conte\u00fado din\u00e2mico.<\/li>\n<li>A t\u00e9cnica beneficia principalmente o carregamento da primeira p\u00e1gina. O CSS \u00e9 armazenado em cache para as p\u00e1ginas subseq\u00fcentes, portanto, estilos adicionais alinhados ir\u00e3o aumentar o peso da p\u00e1gina.<\/li>\n<\/ul>\n<h3>Use a renderiza\u00e7\u00e3o Media Query<\/h3>\n<p>Uma \u00fanica concatenada e minerada ir\u00e1 beneficiar a maioria dos sites, mas sites que requerem uma quantidade significativa de estilos de tela maiores poderiam dividir arquivos CSS e carregar usando uma consulta de m\u00eddia:<\/p>\n<pre><code class=\"language-html\">&lt;!-- core styles loaded on all devices --&gt;\n&lt;link rel=\"stylesheet\" href=\"core.css\"&gt;\n&lt;!-- served to screens at least 40em wide --&gt;\n&lt;link rel=\"stylesheet\" media=\"(min-width: 40em)\" href=\"40em.css\"&gt;\n&lt;!-- served to screens at least 80em wide --&gt;\n&lt;link rel=\"stylesheet\" media=\"(min-width: 80em)\" href=\"80em.css\"&gt;<\/code><\/pre>\n<p>Este exemplo assume uma metodologia mobile-first. Os dispositivos m\u00f3veis carregam o <strong>core.css<\/strong> mas podem n\u00e3o precisar baixar ou analisar outras folhas de estilo.<\/p>\n<h3>Use renderiza\u00e7\u00e3o progressiva<\/h3>\n<p>A renderiza\u00e7\u00e3o progressiva \u00e9 uma t\u00e9cnica que define folhas de estilo individuais para p\u00e1ginas ou componentes separados. Ela pode beneficiar sites muito grandes onde p\u00e1ginas individuais s\u00e3o constru\u00eddas a partir de uma extensa gama de componentes.<\/p>\n<p>Cada arquivo CSS \u00e9 carregado imediatamente antes de um componente ser referenciado no HTML:<\/p>\n<pre><code class=\"language-html\">&lt;head&gt;\n  &lt;!-- core styles --&gt;\n  &lt;link rel=\"stylesheet\" href=\"core.css\" \/&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n  &lt;!-- header --&gt;\n  &lt;link rel=\"stylesheet\" href=\"header.css\" \/&gt;\n  &lt;header&gt;...&lt;\/header&gt;\n  &lt;!-- primary content --&gt;\n  &lt;link rel=\"stylesheet\" href=\"main.css\" \/&gt;\n  &lt;main&gt;\n    &lt;!-- widget styling --&gt;\n    &lt;link rel=\"stylesheet\" href=\"widget.css\" \/&gt;\n    &lt;div class=\"mywidget&gt;...&lt;\/div&gt;\n  &lt;\/main&gt;\n  &lt;!-- footer --&gt;\n  &lt;link rel=\"stylesheet\" href=\"footer.css\" \/&gt;\n  &lt;footer&gt;...&lt;\/footer&gt;\n&lt;\/body&gt;<\/code><\/pre>\n<p>Isto funciona bem na maioria dos navegadores. (o Safari mostra uma p\u00e1gina em branco at\u00e9 que todo o CSS seja carregado, mas n\u00e3o deve ser notavelmente pior do que uma \u00fanica folha de estilo grande)<\/p>\n<p>A ado\u00e7\u00e3o de componentes Web tamb\u00e9m encoraja o uso de estilos escopados que s\u00e3o carregados quando o elemento personalizado \u00e9 renderizado.<\/p>\n<h2>Otimize o desempenho do CSS<\/h2>\n<p>As t\u00e9cnicas e propriedades do CSS colocam diferentes tens\u00f5es no navegador, na CPU, na mem\u00f3ria, na largura de banda e em outros recursos. As seguintes dicas podem ajudar voc\u00ea a evitar processamento desnecess\u00e1rio e desempenho lento.<\/p>\n<h3>Adote t\u00e9cnicas modernas de layout (Grid e Flexbox)<\/h3>\n<p>Layouts baseados em flutuadores s\u00e3o dif\u00edceis de criar, usam in\u00fameras propriedades, requerem uma margem cont\u00ednua e ajustes de preenchimento, devem ser gerenciados usando consultas de m\u00eddia, e incorrem em um consider\u00e1vel processamento no navegador. Eles foram o \u00fanico m\u00e9todo de layout vi\u00e1vel por muitos anos, mas n\u00e3o s\u00e3o mais necess\u00e1rios. Use um ou outro:<\/p>\n<ul>\n<li><a href=\"https:\/\/kinsta.com\/pt\/blog\/design-responsivo-web\/#flexbox-layout\" target=\"_blank\" rel=\"noopener noreferrer\">CSS Flexbox<\/a> para layouts unidimensionais, que podem ser inclu\u00eddos na pr\u00f3xima linha. \u00c9 ideal para menus, galerias de imagens, cart\u00f5es, etc.<\/li>\n<li><a href=\"https:\/\/kinsta.com\/pt\/blog\/design-responsivo-web\/#size-layout-elements-with-percentages-or-create-a-css-grid-layout\" target=\"_blank\" rel=\"noopener noreferrer\">CSS Grid<\/a> para layouts bidimensionais com linhas e colunas expl\u00edcitas. \u00c9 ideal para layouts de p\u00e1gina.<\/li>\n<\/ul>\n<p>Ambos s\u00e3o mais simples de desenvolver, usar menos c\u00f3digo, renderizar mais r\u00e1pido e adaptar-se a qualquer tamanho de tela sem consultas de m\u00eddia.<\/p>\n<p>Navegadores muito antigos n\u00e3o reconhecer\u00e3o as propriedades modernas de flexbox e grid, ent\u00e3o cada elemento se torna um bloco. Mostre-os em um simples layout linear m\u00f3vel: <em>n\u00e3o h\u00e1 necessidade de emular o design com fallbacks baseados em flutuadores<\/em>.<\/p>\n<h3>Substitua Imagens por Gradientes e Efeitos CSS<\/h3>\n<p>Sempre que poss\u00edvel, opte pelo c\u00f3digo CSS ao inv\u00e9s de imagens. Experimente com gradientes, bordas, raios, sombras, filtros, modos de mistura, m\u00e1scaras, clipping e efeitos de pseudoelementos para reutilizar ou substituir imagens existentes.<\/p>\n<p>Os efeitos CSS usam consideravelmente menos largura de banda, s\u00e3o mais f\u00e1ceis de modificar e geralmente podem ser animados.<\/p>\n<h3>Evite o uso excessivo de propriedades pesadas<\/h3>\n<p>Voc\u00ea pode ter um c\u00f3digo declarativo terse, mas alguns CSS requerem mais processamento do que outros. As seguintes propriedades acionam c\u00e1lculos de pintura que podem ser pesadas quando usadas em excesso:<\/p>\n<ul>\n<li><code>position: fixed<\/code><\/li>\n<li><code>border-radius<\/code><\/li>\n<li><code>box-shadow<\/code><\/li>\n<li><code>text-shadow<\/code><\/li>\n<li><code>opacity<\/code><\/li>\n<li><code>transform<\/code><\/li>\n<li><code>filter<\/code><\/li>\n<li><code>backdrop-filter<\/code><\/li>\n<li><code>background-blend-mode<\/code><\/li>\n<\/ul>\n<h3>Use transi\u00e7\u00f5es e anima\u00e7\u00f5es CSS quando poss\u00edvel<\/h3>\n<p>As transi\u00e7\u00f5es e anima\u00e7\u00f5es CSS ser\u00e3o sempre mais suaves do que os efeitos alimentados por JavaScript, que modificam propriedades similares. Eles n\u00e3o ser\u00e3o processados em navegadores muito antigos, mas, como \u00e9 prov\u00e1vel que eles estejam rodando em dispositivos menos capazes, isso \u00e9 para o melhor.<\/p>\n<p>No entanto, evite anima\u00e7\u00e3o excessiva. Os efeitos devem melhorar a experi\u00eancia do usu\u00e1rio sem afetar adversamente o desempenho ou causar enj\u00f4o de movimento. Verifique a consulta de m\u00eddia <a href=\"https:\/\/developer.mozilla.org\/docs\/Web\/CSS\/@media\/prefers-reduced-motion\" target=\"_blank\" rel=\"noopener noreferrer\">com movimento reduzido<\/a> e desabilite as anima\u00e7\u00f5es quando necess\u00e1rio.<\/p>\n<h3>Evite animar propriedades que acionam um Re-Layout<\/h3>\n<p>Alterar as dimens\u00f5es de um elemento (largura, altura, estofamento, borda) ou a posi\u00e7\u00e3o (topo, fundo, esquerda, direita, margem) pode fazer com que a p\u00e1gina inteira seja re-layout em cada quadro de anima\u00e7\u00e3o. As propriedades mais eficientes para animar s\u00e3o:<\/p>\n<ul>\n<li><strong><code>opacity<\/code><\/strong><\/li>\n<li><strong><code>filter<\/code><\/strong>: Desfoque, contraste, sombra, e outros efeitos<\/li>\n<li><strong><code>transform<\/code><\/strong>: Para traduzir (mover), escalar, ou girar um elemento<\/li>\n<\/ul>\n<p>Os navegadores podem usar a GPU acelerada por hardware para renderizar esses efeitos em sua pr\u00f3pria camada, de modo que apenas a fase de composi\u00e7\u00e3o \u00e9 afetada.<\/p>\n<p>Se voc\u00ea tiver que animar outras propriedades, voc\u00ea pode melhorar o desempenho retirando o elemento do fluxo da p\u00e1gina com posi\u00e7\u00e3o: absoluto.<\/p>\n<h3>Cuidado com os seletores complexos<\/h3>\n<p>Os navegadores analisar\u00e3o rapidamente os seletores CSS mais complexos, mas simplificando-os reduz o tamanho dos arquivos e melhora o desempenho. Seletores complexos s\u00e3o freq\u00fcentemente gerados quando voc\u00ea cria estruturas profundamente aninhadas em pr\u00e9-processadores CSS como o Sass.<\/p>\n<h3>Indique quais elementos ir\u00e3o mudar<\/h3>\n<p>A <a href=\"https:\/\/developer.mozilla.org\/docs\/Web\/CSS\/will-change\" target=\"_blank\" rel=\"noopener noreferrer\">propriedade do CSS<\/a> permite que voc\u00ea avise como um elemento ser\u00e1 alterado ou animado para que o navegador possa fazer otimiza\u00e7\u00f5es com anteced\u00eancia:<\/p>\n<pre><code class=\"language-css\">.myelement {\n  will-change: transform, opacity;\n}<\/code><\/pre>\n<p>Qualquer n\u00famero de valores separados por v\u00edrgula pode ser definido, mas a propriedade s\u00f3 deve ser usada como um \u00faltimo recurso para corrigir problemas de desempenho conhecidos. Voc\u00ea n\u00e3o deve aplic\u00e1-la a muitos elementos, e certifique-se de dar-lhe tempo suficiente para inicializar.<\/p>\n<h3>Considere a conten\u00e7\u00e3o do CSS<\/h3>\n<p>A <a href=\"https:\/\/developer.mozilla.org\/docs\/Web\/CSS\/CSS_Containment\" target=\"_blank\" rel=\"noopener noreferrer\">conten\u00e7\u00e3o<\/a> \u00e9 uma nova funcionalidade do CSS que pode melhorar o desempenho, permitindo que voc\u00ea identifique sub\u00e1rvores isoladas de uma p\u00e1gina. O navegador pode otimizar o processamento ao renderizar &#8211; ou <em>n\u00e3o <\/em>renderizar &#8211; um bloco espec\u00edfico de conte\u00fado DOM.<\/p>\n<p>A <a href=\"https:\/\/developer.mozilla.org\/docs\/Web\/CSS\/contain\" target=\"_blank\" rel=\"noopener noreferrer\">propriedade de conten\u00e7\u00e3o<\/a> aceita um ou mais dos seguintes valores em uma lista separada por espa\u00e7o:<\/p>\n<ul>\n<li><strong><code>none<\/code><\/strong>: A conten\u00e7\u00e3o n\u00e3o \u00e9 aplicada<\/li>\n<li><strong><code>layout<\/code><\/strong>: O layout do elemento \u00e9 isolado do resto da p\u00e1gina &#8211; seu conte\u00fado n\u00e3o afetar\u00e1 outros elementos<\/li>\n<li><strong><code>paint<\/code><\/strong>: Os elemento child n\u00e3o s\u00e3o exibidas fora de seus limites<\/li>\n<li><strong><code>size<\/code><\/strong>: O tamanho do elemento pode ser determinado sem verifica\u00e7\u00e3o de elementos childs &#8211; as dimens\u00f5es s\u00e3o independentes do conte\u00fado<\/li>\n<\/ul>\n<p>Dois valores especiais tamb\u00e9m est\u00e3o dispon\u00edveis:<\/p>\n<ul>\n<li><strong><code>strict<\/code><\/strong>: Todas as regras de conten\u00e7\u00e3o (exceto nenhuma) s\u00e3o aplicadas<\/li>\n<li><strong><code>content<\/code><\/strong>: Aplica layout e paint<\/li>\n<\/ul>\n<aside role=\"note\" class=\"wp-block-kinsta-notice is-style-important\">\n            <h3>Important<\/h3>\n        <p>Uma p\u00e1gina tem uma lista <code>&lt;ul&gt;<\/code> com <code>contain: strict<\/code>; aplicado. Se voc\u00ea alterar o conte\u00fado de qualquer child <code>&lt;li&gt;<\/code>, o navegador n\u00e3o recalcular\u00e1 o tamanho ou posi\u00e7\u00e3o daquele item, outros itens da lista, ou quaisquer outros elementos da p\u00e1gina.<\/p>\n<\/aside>\n\n<p>A conten\u00e7\u00e3o de CSS \u00e9 <a href=\"https:\/\/caniuse.com\/mdn-css_properties_contain\" target=\"_blank\" rel=\"noopener noreferrer\">suportada na maioria dos navegadores modernos<\/a>. N\u00e3o h\u00e1 suporte no Safari ou em aplicativos mais antigas, mas a conten\u00e7\u00e3o pode ser usada com seguran\u00e7a nestes porque o navegador simplesmente ignorar\u00e1 a propriedade.<\/p>\n<h3>Responder ao cabe\u00e7alho Save-Data<\/h3>\n<p><a href=\"https:\/\/developer.mozilla.org\/docs\/Web\/HTTP\/Headers\/Save-Data\" target=\"_blank\" rel=\"noopener noreferrer\">Save-Data<\/a> \u00e9 um cabe\u00e7alho de solicita\u00e7\u00e3o HTTP que indica que o usu\u00e1rio solicitou dados reduzidos. Ele pode ser rotulado como &#8220;Lite&#8221; ou &#8220;Turbo&#8221; em alguns navegadores.<\/p>\n<p>Quando ativado, um cabe\u00e7alho <code>Save-Data<\/code> \u00e9 enviado com cada solicita\u00e7\u00e3o do navegador:<\/p>\n<pre><code class=\"language-text\">GET \/main.css HTTP\/1.0\nHost: site.com\nSave-Data: on<\/code><\/pre>\n<p>O servidor pode responder de acordo quando o Save-Data for detectado. No caso do CSS, ele pode enviar um layout linear mais simples, usar uma fonte do SO, mudar para cores de bloco, ou carregar fundos de imagens de baixa resolu\u00e7\u00e3o.<\/p>\n<p>Note que o servidor deve retornar o seguinte cabe\u00e7alho em pedidos modificados para garantir que o conte\u00fado m\u00ednimo n\u00e3o seja colocado em cache e reutilizado quando o usu\u00e1rio desligar o modo Lite\/Turbo:<\/p>\n<pre><code class=\"language-text\">Vary: Accept-Encoding, Save-Data<\/code><\/pre>\n<p>O cabe\u00e7alho tamb\u00e9m pode ser detectado pelo JavaScript do lado do cliente. O c\u00f3digo a seguir adiciona uma classe bestUX ao elemento <code>&lt;html&gt;<\/code> quando Save-Data <em>n\u00e3o<\/em> est\u00e1 habilitado:<\/p>\n<pre><code class=\"language-js\">if ('connection' in navigator && !navigator.connection.saveData) {\n  document.documentElement.classList.add('bestUX');\n}<\/code><\/pre>\n<p>As folhas de estilo podem ent\u00e3o reagir de acordo sem qualquer manipula\u00e7\u00e3o do servidor:<\/p>\n<pre><code class=\"language-css\">\/* no hero image by default *\/\nheader {\n  background-color: #abc;\n  background-image: none;\n}\n\/* hero image when no Save-Data *\/\n.bestUX header {\n  background-image: url(\"hero.jpg\");\n}<\/code><\/pre>\n<p>A <a href=\"https:\/\/developer.mozilla.org\/docs\/Web\/CSS\/@media\/prefers-reduced-data\">consulta de m\u00eddia de dados preferencialmente reduzidos<\/a> oferece como alternativa uma op\u00e7\u00e3o somente CSS, embora isto n\u00e3o seja suportado em nenhum navegador no momento da reda\u00e7\u00e3o:<\/p>\n<pre><code class=\"language-css\">\/* no hero image by default *\/\nheader {\n  background-color: #abc;\n  background-image: none;\n}\n\/* hero image when no Save-Data *\/\n@media (prefers-reduced-data: no-preference) {\n  header {\n    background-image: url(\"hero.jpg\");\n  }\n}<\/code><\/pre>\n\n<h2>Resumo<\/h2>\n<p>H\u00e1 muitas op\u00e7\u00f5es para otimizar o desempenho do CSS, mas para novos projetos, considere as seguintes pr\u00e1ticas:<\/p>\n<ol>\n<li><strong>Use uma<\/strong> <a href=\"https:\/\/kinsta.com\/pt\/blog\/google-mobile-first-index\/\">abordagem mobile-first<\/a>: Codifique primeiro o layout m\u00f3vel mais simples, depois adicione melhorias \u00e0 medida que o espa\u00e7o na tela e o conjunto de recursos do navegador aumentam.<\/li>\n<li><strong>Divida o CSS em arquivos separados com responsabilidades identific\u00e1veis:<\/strong> Um pr\u00e9-processador CSS ou <a href=\"https:\/\/kinsta.com\/pt\/blog\/combinar-css-externo\/\">plugin CMS pode combinar partiais CSS em um \u00fanico arquivo<\/a>.<\/li>\n<li><strong>Adicione uma etapa de constru\u00e7\u00e3o:<\/strong> Est\u00e3o dispon\u00edveis ferramentas que podem automaticamente forrar o c\u00f3digo, identificar problemas, concatenar, minificar, reduzir tamanhos de imagem e muito mais. A automa\u00e7\u00e3o torna a vida mais f\u00e1cil, e \u00e9 menos prov\u00e1vel que voc\u00ea esque\u00e7a uma etapa de otimiza\u00e7\u00e3o.<\/li>\n<li><strong>Documente suas folhas de estilo:<\/strong> Um guia de estilo com exemplos documentados tornar\u00e1 seu c\u00f3digo mais f\u00e1cil de manter. Voc\u00ea ser\u00e1 capaz de identificar e remover CSS antigos sem quebr\u00e1-lo.<\/li>\n<\/ol>\n<p>Finalmente, <a href=\"https:\/\/kinsta.com\/pt\/blog\/melhor-linguagem-de-programacao\/#html-and-css\">aprenda CSS<\/a>! Quanto mais voc\u00ea souber, menos c\u00f3digo voc\u00ea precisar\u00e1 escrever, e mais r\u00e1pido ser\u00e1 seu aplicativo web. Isso far\u00e1 de voc\u00ea um desenvolvedor melhor, independentemente de quaisquer plataformas e frameworks que voc\u00ea use.<\/p>\n<p><em>Que outras dicas voc\u00ea tem para otimizar o desempenho do CSS? Por favor, compartilhe-as na se\u00e7\u00e3o de coment\u00e1rios!<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Mesmo em 2021, o desempenho da web continua sendo um problema. De acordo com o HTTP Archive, a p\u00e1gina m\u00e9dia requer um download de 2 MB, &#8230;<\/p>\n","protected":false},"author":188,"featured_media":44431,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[390,263],"topic":[1032],"class_list":["post-44427","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","tag-css","tag-web-development","topic-desempenho-do-wordpress"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v24.6 (Yoast SEO v24.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Como Otimizar o CSS para o M\u00e1ximo Desempenho do Site<\/title>\n<meta name=\"description\" content=\"O CSS pode parecer suficientemente inocente, mas pode exigir algum processamento pesado. Use este guia para otimizar adequadamente o CSS e melhorar o desempenho do site.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kinsta.com\/pt\/blog\/otimizar-css\/\" \/>\n<meta property=\"og:locale\" content=\"pt_PT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Como Otimizar o CSS para o M\u00e1ximo Desempenho do Site\" \/>\n<meta property=\"og:description\" content=\"O CSS pode parecer suficientemente inocente, mas pode exigir algum processamento pesado. Use este guia para otimizar adequadamente o CSS e melhorar o desempenho do site.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/pt\/blog\/otimizar-css\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kinstapt\/\" \/>\n<meta property=\"article:published_time\" content=\"2021-10-01T13:13:44+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-08-22T08:58:25+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2021\/10\/optimize-css.jpeg\" \/>\n\t<meta property=\"og:image:width\" content=\"1460\" \/>\n\t<meta property=\"og:image:height\" content=\"730\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Craig Buckler\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"O CSS pode parecer suficientemente inocente, mas pode exigir algum processamento pesado. Use este guia para otimizar adequadamente o CSS e melhorar o desempenho do site.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2021\/10\/optimize-css.jpeg\" \/>\n<meta name=\"twitter:creator\" content=\"@craigbuckler\" \/>\n<meta name=\"twitter:site\" content=\"@kinsta_pt\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Craig Buckler\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tempo estimado de leitura\" \/>\n\t<meta name=\"twitter:data2\" content=\"26 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/otimizar-css\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/otimizar-css\/\"},\"author\":{\"name\":\"Craig Buckler\",\"@id\":\"https:\/\/kinsta.com\/pt\/#\/schema\/person\/715d986404b06691ab3014e06596908e\"},\"headline\":\"Como Otimizar o CSS para o M\u00e1ximo Desempenho do Site\",\"datePublished\":\"2021-10-01T13:13:44+00:00\",\"dateModified\":\"2023-08-22T08:58:25+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/otimizar-css\/\"},\"wordCount\":5735,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/pt\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/otimizar-css\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2021\/10\/optimize-css.jpeg\",\"keywords\":[\"css\",\"web development\"],\"articleSection\":[\"Tutoriais de Desempenho do WordPress\"],\"inLanguage\":\"pt-PT\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/pt\/blog\/otimizar-css\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/otimizar-css\/\",\"url\":\"https:\/\/kinsta.com\/pt\/blog\/otimizar-css\/\",\"name\":\"Como Otimizar o CSS para o M\u00e1ximo Desempenho do Site\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/pt\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/otimizar-css\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/otimizar-css\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2021\/10\/optimize-css.jpeg\",\"datePublished\":\"2021-10-01T13:13:44+00:00\",\"dateModified\":\"2023-08-22T08:58:25+00:00\",\"description\":\"O CSS pode parecer suficientemente inocente, mas pode exigir algum processamento pesado. Use este guia para otimizar adequadamente o CSS e melhorar o desempenho do site.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/otimizar-css\/#breadcrumb\"},\"inLanguage\":\"pt-PT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/pt\/blog\/otimizar-css\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-PT\",\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/otimizar-css\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2021\/10\/optimize-css.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2021\/10\/optimize-css.jpeg\",\"width\":1460,\"height\":730,\"caption\":\"Como Otimizar o CSS para o Pico de Desempenho do Site\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/otimizar-css\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/pt\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Desempenho do WordPress\",\"item\":\"https:\/\/kinsta.com\/pt\/topicos\/desempenho-do-wordpress\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Como Otimizar o CSS para o M\u00e1ximo Desempenho do Site\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/pt\/#website\",\"url\":\"https:\/\/kinsta.com\/pt\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Solu\u00e7\u00f5es de hospedagem Premium, r\u00e1pida e segura\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/pt\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/pt\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-PT\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/pt\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/pt\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-PT\",\"@id\":\"https:\/\/kinsta.com\/pt\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/pt\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/kinstapt\/\",\"https:\/\/x.com\/kinsta_pt\",\"https:\/\/www.instagram.com\/kinstahosting\/\",\"https:\/\/www.linkedin.com\/company\/kinsta\/\",\"https:\/\/www.pinterest.com\/kinstahosting\/\",\"https:\/\/www.youtube.com\/c\/Kinsta\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/kinsta.com\/pt\/#\/schema\/person\/715d986404b06691ab3014e06596908e\",\"name\":\"Craig Buckler\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-PT\",\"@id\":\"https:\/\/kinsta.com\/pt\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/8e76011e66720bd2e3e24e164aa6f0b2?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/8e76011e66720bd2e3e24e164aa6f0b2?s=96&d=mm&r=g\",\"caption\":\"Craig Buckler\"},\"description\":\"Freelance UK web developer, writer, and speaker. Has been around a long time and rants about standards and performance.\",\"sameAs\":[\"https:\/\/craigbuckler.com\/\",\"https:\/\/www.linkedin.com\/in\/craigbuckler\",\"https:\/\/x.com\/craigbuckler\",\"https:\/\/www.youtube.com\/channel\/UCQwdl5oBTWGhifS6bRGADMQ\"],\"url\":\"https:\/\/kinsta.com\/pt\/blog\/author\/craigbuckler\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Como Otimizar o CSS para o M\u00e1ximo Desempenho do Site","description":"O CSS pode parecer suficientemente inocente, mas pode exigir algum processamento pesado. Use este guia para otimizar adequadamente o CSS e melhorar o desempenho do site.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/kinsta.com\/pt\/blog\/otimizar-css\/","og_locale":"pt_PT","og_type":"article","og_title":"Como Otimizar o CSS para o M\u00e1ximo Desempenho do Site","og_description":"O CSS pode parecer suficientemente inocente, mas pode exigir algum processamento pesado. Use este guia para otimizar adequadamente o CSS e melhorar o desempenho do site.","og_url":"https:\/\/kinsta.com\/pt\/blog\/otimizar-css\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinstapt\/","article_published_time":"2021-10-01T13:13:44+00:00","article_modified_time":"2023-08-22T08:58:25+00:00","og_image":[{"width":1460,"height":730,"url":"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2021\/10\/optimize-css.jpeg","type":"image\/jpeg"}],"author":"Craig Buckler","twitter_card":"summary_large_image","twitter_description":"O CSS pode parecer suficientemente inocente, mas pode exigir algum processamento pesado. Use este guia para otimizar adequadamente o CSS e melhorar o desempenho do site.","twitter_image":"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2021\/10\/optimize-css.jpeg","twitter_creator":"@craigbuckler","twitter_site":"@kinsta_pt","twitter_misc":{"Escrito por":"Craig Buckler","Tempo estimado de leitura":"26 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/pt\/blog\/otimizar-css\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/pt\/blog\/otimizar-css\/"},"author":{"name":"Craig Buckler","@id":"https:\/\/kinsta.com\/pt\/#\/schema\/person\/715d986404b06691ab3014e06596908e"},"headline":"Como Otimizar o CSS para o M\u00e1ximo Desempenho do Site","datePublished":"2021-10-01T13:13:44+00:00","dateModified":"2023-08-22T08:58:25+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/pt\/blog\/otimizar-css\/"},"wordCount":5735,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/pt\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/pt\/blog\/otimizar-css\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2021\/10\/optimize-css.jpeg","keywords":["css","web development"],"articleSection":["Tutoriais de Desempenho do WordPress"],"inLanguage":"pt-PT","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/pt\/blog\/otimizar-css\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/pt\/blog\/otimizar-css\/","url":"https:\/\/kinsta.com\/pt\/blog\/otimizar-css\/","name":"Como Otimizar o CSS para o M\u00e1ximo Desempenho do Site","isPartOf":{"@id":"https:\/\/kinsta.com\/pt\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/pt\/blog\/otimizar-css\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/pt\/blog\/otimizar-css\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2021\/10\/optimize-css.jpeg","datePublished":"2021-10-01T13:13:44+00:00","dateModified":"2023-08-22T08:58:25+00:00","description":"O CSS pode parecer suficientemente inocente, mas pode exigir algum processamento pesado. Use este guia para otimizar adequadamente o CSS e melhorar o desempenho do site.","breadcrumb":{"@id":"https:\/\/kinsta.com\/pt\/blog\/otimizar-css\/#breadcrumb"},"inLanguage":"pt-PT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/pt\/blog\/otimizar-css\/"]}]},{"@type":"ImageObject","inLanguage":"pt-PT","@id":"https:\/\/kinsta.com\/pt\/blog\/otimizar-css\/#primaryimage","url":"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2021\/10\/optimize-css.jpeg","contentUrl":"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2021\/10\/optimize-css.jpeg","width":1460,"height":730,"caption":"Como Otimizar o CSS para o Pico de Desempenho do Site"},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/pt\/blog\/otimizar-css\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/pt\/"},{"@type":"ListItem","position":2,"name":"Desempenho do WordPress","item":"https:\/\/kinsta.com\/pt\/topicos\/desempenho-do-wordpress\/"},{"@type":"ListItem","position":3,"name":"Como Otimizar o CSS para o M\u00e1ximo Desempenho do Site"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/pt\/#website","url":"https:\/\/kinsta.com\/pt\/","name":"Kinsta\u00ae","description":"Solu\u00e7\u00f5es de hospedagem Premium, r\u00e1pida e segura","publisher":{"@id":"https:\/\/kinsta.com\/pt\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/pt\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-PT"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/pt\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/pt\/","logo":{"@type":"ImageObject","inLanguage":"pt-PT","@id":"https:\/\/kinsta.com\/pt\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/pt\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kinstapt\/","https:\/\/x.com\/kinsta_pt","https:\/\/www.instagram.com\/kinstahosting\/","https:\/\/www.linkedin.com\/company\/kinsta\/","https:\/\/www.pinterest.com\/kinstahosting\/","https:\/\/www.youtube.com\/c\/Kinsta"]},{"@type":"Person","@id":"https:\/\/kinsta.com\/pt\/#\/schema\/person\/715d986404b06691ab3014e06596908e","name":"Craig Buckler","image":{"@type":"ImageObject","inLanguage":"pt-PT","@id":"https:\/\/kinsta.com\/pt\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/8e76011e66720bd2e3e24e164aa6f0b2?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/8e76011e66720bd2e3e24e164aa6f0b2?s=96&d=mm&r=g","caption":"Craig Buckler"},"description":"Freelance UK web developer, writer, and speaker. Has been around a long time and rants about standards and performance.","sameAs":["https:\/\/craigbuckler.com\/","https:\/\/www.linkedin.com\/in\/craigbuckler","https:\/\/x.com\/craigbuckler","https:\/\/www.youtube.com\/channel\/UCQwdl5oBTWGhifS6bRGADMQ"],"url":"https:\/\/kinsta.com\/pt\/blog\/author\/craigbuckler\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/posts\/44427","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/users\/188"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/comments?post=44427"}],"version-history":[{"count":16,"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/posts\/44427\/revisions"}],"predecessor-version":[{"id":58315,"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/posts\/44427\/revisions\/58315"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/44427\/translations\/en"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/44427\/translations\/de"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/44427\/translations\/it"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/44427\/translations\/fr"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/44427\/translations\/pt"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/44427\/translations\/es"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/44427\/translations\/nl"},{"href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/44427\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/media\/44431"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/media?parent=44427"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/tags?post=44427"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/topic?post=44427"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}