Colocar as propriedades no CSS em ordem alfabética é melhor pra performance?
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.
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ê.