Os minificadores Javascript otimizam para o gzip?

5

Caso1: Existem dois fragmentos de código que são muito semelhantes e muito fáceis, um no início do documento e outro além de 32kb no final do documento. O minificador traz os dois trechos juntos para que o gzip alcance o segundo trecho?

Caso 2: um snippet de código é usado várias vezes. Gzip repetindo isso tomaria um byte. Mas se esse snippet for colocado em uma função, será necessário 1 byte para function , pelo menos 1 byte para o nome da função, 1 byte para () { e um byte para } . O minificador transforma as funções de volta em trechos repetidos de código para gzip?

Tenho certeza de que há mais casos em que não pensei, mas esses dois estão na minha mente há algum tempo e eu gostaria de colocá-los em repouso ou começar a implementá-los em meu próprio código.

    
por dtgq 06.06.2016 / 01:54
fonte

3 respostas

5

Ambos são altamente improváveis, e eu ativamente evitaria qualquer otimizador que fizesse essas transformações, porque eu suspeitava que ele pudesse ter erros sutis.

Case1: There are two snippets of code that are very similar and very gzip-able, one at the start of the document and the other is beyond 32kb at the end of the document. Does the minifier bring the two snippets together so that gzip will reach the second snippet?

Mover os dois trechos juntos significa reordenar o código. Isso pode ser perfeitamente seguro, mas determinar se é seguro ou não é um problema difícil (tenho certeza de que, com um pouco de esforço, há um exemplo que prova ser indecidível).

Case 2: A snippet of code is used multiple times. Gzip repeating it would take a byte. But if that snippet is put in a function, it would require 1 byte for function, at least 1 byte for the function name, 1 byte for () {, and one byte for }. Does the minifier turn functions back into repeated snippets of code for gzip?

Isso definitivamente seria inseguro. O minitor não tem como saber se outro JavaScript em um script separado acessa essa função.

    
por 06.06.2016 / 17:47
fonte
4

Sim, , não necessariamente das maneiras que você descreveu.

Mas há pelo menos um caso muito específico em que o Closure Compiler do Google otimiza o gzip:

Closure Compiler can even tell when two different variables are never used at the same time, letting both share the same name and ensuring that as many variables as possible use very short names for better gzip compression. (Google)

    
por 06.06.2016 / 17:56
fonte
-1

Os minimizadores reduzem a quantidade de espaço em disco ocupado por um arquivo, preservando sua funcionalidade. Eles normalmente fazem isso excluindo espaços em branco tecnicamente desnecessários, recuos, novas linhas e comentários. Então eles reduzem os nomes das variáveis a letras

    function helloWorld() {
         //helloWorld string would be preserved
         console.log("helloWorld");
    }
    //Please don't ever write code like this
    var HelloWorld = helloWorld();

Minimizaria para

    function a(){console.log("helloWorld");}var b=a();

Isso não tem nada a ver com o gzip, que é um tipo separado de compactação que será feito em cima de seus arquivos javascript minificados. Ao contrário de um minifer, o arquivo é comprimido onde ele deve ser descompactado antes de poder ser executado.

Os benefícios que você recebe do gzip dependerão tecnicamente do conteúdo do arquivo, mas isso não é algo com o qual você precise se preocupar. o gzip otimiza para você , e não o contrário

    
por 06.06.2016 / 02:45
fonte