Por que a minificação HTML / Javascript é benéfica

13

Por que a minificação HTML / Javascript é benéfica quando o protocolo HTTP já suporta compactação de dados gzip?

Percebo que a minificação Javascript / HTML tem o potencial de reduzir significativamente o tamanho dos arquivos Javascript / HTML, removendo espaços em branco desnecessários e talvez renomeando variáveis ​​para algumas letras cada, mas o algoritmo LZW não funciona especialmente bem quando há muitas repetições caracteres (por exemplo, muito espaço em branco?)

Percebo que algumas ferramentas de minificação Javascript fazem mais do que apenas reduzir o tamanho. O compilador de fechamento do Google, por exemplo, também tenta melhorar o desempenho do código, incorporando funções e fazendo outras análises. Mas o objetivo principal da minificação de Javascript é geralmente reduzir o tamanho do arquivo.

Também percebo que há outras razões pelas quais você pode reduzir, além da performance, como a ofuscação do código. Mas, novamente, esse motivo geralmente não é enfatizado tanto quanto o ganho de desempenho e a redução do tamanho do arquivo. Por exemplo, o Closure Compiler não é anunciado como uma ferramenta de ofuscação, mas como um redutor de tamanho de código e aprimorador da velocidade de download.

Então, quanto desempenho você realmente ganha com a minificação de Javascript / HTML quando já está reduzindo significativamente o tamanho do arquivo com a compactação gzip?

Channel72
fonte

Respostas:

10

Como a compactação gzip tem sua própria sobrecarga (CPU). Minificação é a primeira compactação "baixa suspensão" que pode ser aplicada sem o impacto da CPU.

No entanto, eles podem parecer insignificantes; os números logo fazem sentido quando há escala envolvida.

Além disso, com a minificação, você tem menos que usar o gzip.

Noite escura
fonte
3
Os servidores da web modernos realmente compactam os arquivos javascript para cada solicitação? Parece provável que um servidor armazene em cache conteúdo estático compactado em gzip, pois é improvável que seja alterado.
Aaberg
@aaberg Mesmo assim, são mais dados armazenados em cache no servidor. (não que o cache não é bom)
chills42
@ chilis42: Os servidores podem servir arquivos pré-compactados a partir do próprio sistema de arquivos, se esse for o problema.
usar o seguinte
+1 para escala. Se você tem 10 usuários e 100 acessos por dia, é irrelavante. Se você precisar do servidor 100k acessa uma hora, é uma economia substancial.
SoylentGray
2
Algo me diz que executar o compilador JavaScript em grande escala e várias execuções de otimização na representação interna, tudo isso implementado frequentemente em Java, não é uma sobrecarga baixa da CPU .
Oleg V. Volkov
5

O Minification + gzip geralmente fornece melhores resultados, porque o gzip é um algoritmo geral, não adaptado especificamente a uma entrada ou outra, enquanto o minificator está ciente de seu conteúdo e pode fazer um trabalho que o algoritmo de compactação geral não pode. Também pode ser prejudicial (pense: elimine completamente comentários e espaços em branco - isso é 100% de compactação para esses dados, como você pode superar isso?), Enquanto a compactação geral não pode.

Oleg V. Volkov
fonte
2

Você pode não obter muitos benefícios de desempenho, mas ainda reduz o uso da largura de banda. Se você pode cortar alguns kb dos arquivos js (e css) por meio de minificação (e uso de sprites de css para reduzir o número de solicitações) e está atendendo milhares de usuários por dia, após um mês você reduzirá significativamente sua largura de banda.

Steve Whitehouse
fonte
1
+1: Minificação é sobre economia agregada. Isso pode ajudar uma solicitação individual a ser mais rápida, mas o objetivo é diminuir o uso da largura de banda ao longo do tempo.
Joel Etherton
1

A coisa mais cara que você faz em um aplicativo da web é enviar as coisas pelo ar. Enviar menos material pelo fio é quase sempre uma vitória líquida se você estiver pagando em ciclos de CPU.

Além disso, não tenho nada científico para apoiar isso, mas espero que as ferramentas de minificação provavelmente comprimam javascript melhor que o gzip, se por nenhuma outra razão as ferramentas de minificação forem específicas do domínio e possam ser ajustadas para compactar melhor o javascript, enquanto o gzip é uma ferramenta genérica e comprometerá o meio.

Wyatt Barnett
fonte