I minifiers Javascript ottimizzano per gzip?

5

Caso 1: Ci sono due frammenti di codice molto simili e molto gzip-in grado, uno all'inizio del documento e l'altro è oltre 32kb alla fine del documento. Il minificatore unisce i due frammenti in modo che gzip raggiunga il secondo frammento?

Caso 2: uno snippet di codice viene utilizzato più volte. La ripetizione di Gzip richiederebbe un byte. Ma se quel frammento viene messo in una funzione, richiederebbe 1 byte per function , almeno 1 byte per il nome della funzione, 1 byte per () { e un byte per } . Il minificatore trasforma le funzioni in ripetuti snippet di codice per gzip?

Sono sicuro che ci sono più casi a cui non ho pensato, ma questi due sono stati a mio avviso per qualche tempo e mi piacerebbe metterli a tacere o iniziare a implementarli nel mio codice.

    
posta dtgq 06.06.2016 - 01:54
fonte

3 risposte

5

Sono entrambi altamente improbabili, e eviterei attivamente qualsiasi ottimizzatore che abbia apportato queste trasformazioni perché sospetto che potrebbe avere bug sottili.

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?

Spostare insieme i due frammenti significa riordinare il codice. Questo potrebbe essere perfettamente sicuro, ma determinare se sia sicuro o meno è un problema difficile (sono sicuro che con un po 'di sforzo c'è un esempio che lo dimostra indecidibile).

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?

Questo sarebbe sicuramente pericoloso. Il minificatore non ha modo di sapere se altri JavaScript in uno script separato accedono a tale funzione.

    
risposta data 06.06.2016 - 17:47
fonte
4

Sì, però, non necessariamente nei modi che hai descritto.

Ma c'è almeno un caso molto specifico in cui il Closure Compiler di Google ottimizza per 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)

    
risposta data 06.06.2016 - 17:56
fonte
-1

I minifiers riducono la quantità di spazio su disco occupata da un file preservandone la funzionalità. In genere lo fanno eliminando spazi bianchi, rientri, nuove linee e commenti tecnicamente inutili. Quindi ridurranno i nomi delle variabili in lettere

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

Ridurrebbe a

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

Questo non ha nulla a che fare con gzip, che è un tipo separato di compressione che verrà eseguito in cima ai tuoi file javascript minimizzati. A differenza di un minifer, il file è compresso dove deve essere non compresso prima di poter essere eseguito.

I vantaggi che ricevi da gzip dipenderanno tecnicamente dal contenuto del file, ma questo non è qualcosa di cui devi preoccuparti. gzip ottimizza per tu , non il contrario

    
risposta data 06.06.2016 - 02:45
fonte

Leggi altre domande sui tag