Colocar as propriedades no CSS em ordem alfabética é melhor pra performance?

Colocar as propriedades no CSS em ordem alfabética é melhor pra performance?
Sérgio Lopes
Sérgio Lopes

Compartilhe

A resposta simples é que não. Esse tipo de variação não afeta muito a performance final.

Mas tem a resposta ultranerd que apareceu no fórum da Alura a partir da pergunta do Julio Cesar.

Entendendo o GZIP

Na prática, nossos arquivos CSS são servidos com GZIP, um algoritmo de compressão que compacta o arquivo no servidor antes de ser transmitido pro navegador.

E acontece que o GZIP é muito bom com textos repetitivos. Pense naquela lousa do Bart Simpson com a mesma frase dezenas de vezes: o GZIP adora isso, a compressão é ótima, porque ele basicamente manda a frase 1x só e manda repetir as demais.

Banner promocional da Alura, com um design futurista em tons de azul, apresentando o texto

O que isso tem a ver com CSS?

Bom, quanto mais repetições você tiver no seu CSS, melhor o GZIP vai trabalhar.

Imagine 2 classes:


.um { 
    background: black; 
    color: white; 
}

.dois { 
    color: white;
     background: black; 
}

Eu rodei o GZIP em linha de comando (gzip -c file.css | wc -c) nesse arquivo CSS simples pra ter uma ideia do tamanho final: 82 bytes.

Coloquei em ordem alfabética as propriedades:


.um { background: black; 
      color: white; }

.dois { background: black;
        color: white; }

E rodei de novo: 77 bytes.

Ambos tem as mesmas propriedades mas como não estão na mesma ordem, diminuem a eficiência do GZIP ao comprimir isso.

O que devo considerar para melhorar a otimização do GZIP?

A ideia é que quanto maior for a intersecção de texto entre diferentes partes do arquivo, melhor pro GZIP comprimir.

Colocar em ordem alfabética vai melhorar a probabilidade de mais texto se repetir dentro do arquivo. Na verdade, qualquer ordenação lógica que não seja aleatória, provavelmente vai aumentar essa chance.

Se você fizer uma ordenação alfabética reversa, por exemplo, vai dar 77 bytes também

Conclusão

Então a resposta super nerd é que ordenar seu CSS com alguma lógica consistente aumenta as chances do GZIP comprimir melhor seu CSS e, logo, menos bytes serem transmitidos pela Internet. Então aumentaria um pouco a performance.

Mas em geral essa "melhoria" é bem pequena, e eu não acho que valha a pena escrever seu CSS assim só por causa disso. Prefiro um CSS que siga o padrão que você julgar mais legível pra você. Até porque existem ferramentas de build que podem pegar seu CSS e fazer essa ordenação depois pra você.

Sérgio Lopes
Sérgio Lopes

Sérgio é diretor e líder do time de diversos times no Grupo Caelum, formado em Ciência da Computação pela USP. É reconhecido por sua atuação em Front-end, Performance, Mobile e Arquitetura de software e tem vasta experiência com ensino, tanto presencial quanto online. Gerencia os projetos internos da empresa e atua na definição de rumos dos produtos e da empresa em geral.

Veja outros artigos sobre Front-end