2010-06-10 12 views
23

Ho notato che ogni volta che uso Google's Closure Compiler Service, lascia alcuni spazi non necessari nel codice compilato presentato sul lato destro della pagina. Questi corrispondono alle interruzioni di riga nella versione ospitata del codice compilato.Perché il Closure Compiler di Google lascia alcuni spazi non necessari o interruzioni di riga?

Per esempio (notare le interruzioni di riga, ognuno dei quali sembra inutile):

http://troy.onespot.com/static/stack_overflow/closure_spaces.js

Fino ad oggi, ho appena rimuoverli manualmente, ma io sono curioso di sapere perchè sono lì . È di limitare la lunghezza della linea della versione ospitata del codice per renderlo più leggibile? Il compilatore può essere abbastanza intelligente da lasciare o inserirli intenzionalmente per massimizzare gli sforzi di compressione GZIP?

So che hanno un effetto insignificante sulla dimensione del file, ma con così tanta fatica nel minimizzare ogni ultimo byte nello script sorgente, è controintuitivo il motivo per cui sono lì.

+0

Non riesco ad accedere a [default.js] (http://closure-compiler.appspot.com/code/jsc39ddc01a5a74a754148a33d2d8f1444/default.js), il link restituisce una pagina con un 'Content-Length' di 0. Puoi incollare (parte) il codice nella tua domanda? –

+0

Ci scusiamo per questo: ho ipotizzato che Google abbia ospitato il codice compilato a tempo indeterminato, ma a quanto pare non lo fanno. Ho aggiornato il link nella domanda sopra. – Bungle

+0

La cosa più folle è Google PageSpeed ​​Insights che si lamenta di pochi byte (<1 KB) e quando scarico i file ottimizzati, js ha linee lunghe 180K, ma non c'è modo di istruire il compilatore Closure (API o applicazione JAVA) per interrompere linee a qualsiasi lunghezza (ad es. 180K) –

risposta

38

citando il Closure Compiler FAQ:

Perché ci sono la linea casuale feed negli script compilati?

Il compilatore di chiusura aggiunge intenzionalmente interruzioni di riga ogni 500 caratteri circa. Firewall e proxy a volte corrompono o ignorano file JavaScript di grandi dimensioni con linee molto lunghe. L'aggiunta di interruzioni di riga ogni 500 caratteri impedisce questo problema. La rimozione delle interruzioni di riga non ha alcun effetto sulla semantica di uno script. L'impatto sulla dimensione del codice è ridotto e il compilatore ottimizza il posizionamento dell'interruzione di riga in modo che la penalità della dimensione del codice sia ancora più piccola quando i file vengono compressi con gzip.

Sapevate che era intelligente! :)

+1

Impressionante, questo lo risolve! Non avevo visto le FAQ - grazie per il collegamento, e apprezzo la risposta. – Bungle

+0

La cosa più folle è Google PageSpeed ​​Insights che si lamenta di alcuni byte (<1 KB) e quando scarico i file ottimizzati, js ha linee lunghe 180K, ma non c'è modo di istruire il compilatore Closure (API o applicazione JAVA) per interrompere linee a qualsiasi lunghezza (ad es. 180K) –

+1

@JoseNobile Ho affrontato di recente questo problema di interruzione di riga con l'applicazione Java. Ho lavorato intorno ad esso per rimuovere le interruzioni di riga manualmente introdotte dal compilatore di chiusura. – Stephan

Problemi correlati