Perché è utile la minificazione HTML / Javascript


14

Perché la minificazione HTML / Javascript è utile quando il protocollo HTTP supporta già la compressione dei dati gzip?

Mi rendo conto che la minimizzazione Javascript / HTML ha il potenziale per ridurre in modo significativo la dimensione dei file Javascript / HTML rimuovendo gli spazi bianchi non necessari e forse rinominando le variabili in poche lettere ciascuna, ma l'algoritmo LZW non funziona particolarmente bene quando ci sono molti ripetuti personaggi (ad es. un sacco di spazi bianchi?)

Mi rendo conto che alcuni strumenti di minificazione Javascript fanno molto di più che ridurre le dimensioni. Il compilatore di chiusura di Google, ad esempio, cerca anche di migliorare le prestazioni del codice incorporando funzioni e facendo altre analisi. Ma lo scopo principale della minimizzazione Javascript è di solito ridurre le dimensioni del file.

Capisco anche che ci sono altri motivi per cui potresti voler minimizzare oltre alla performance, come l'offuscamento del codice. Ma ancora una volta, questa ragione non viene solitamente enfatizzata tanto quanto il guadagno in termini di prestazioni e la riduzione della dimensione del file. Ad esempio, Closure Compiler non è pubblicizzato come uno strumento di offuscamento, ma come un riduttore della dimensione del codice e un potenziatore della velocità di download.

Quindi, quante prestazioni ottieni davvero dalla minificazione Javascript / HTML quando stai già riducendo significativamente le dimensioni del file con la compressione gzip?

Risposte:


11

Perché la compressione gzip ha un proprio overhead (CPU). La minimizzazione è la prima compressione "a sospensione ridotta" che può essere applicata senza il colpo della CPU.

Questi possono sembrare insignificanti, tuttavia i numeri hanno presto un senso quando è coinvolta la scala.

Inoltre, con la minimizzazione hai meno da decomprimere.


3
I server Web moderni comprimeranno effettivamente i file JavaScript per ogni richiesta? Sembra probabile che un server memorizzi nella cache il contenuto gzip statico, poiché è improbabile che cambi.
aaberg,

@aaberg Anche così, sono più dati memorizzati nella cache sul server. (non che la cache non sia buona)
brividi42

@ chilis42: i server sono in grado di servire file pre-compressi dal filesystem stesso, se questo è il problema.
citato il

+1 per la scala. Se hai 10 utenti e 100 hit al giorno è irrelavent. Se hai bisogno di 100k di server ogni ora è un notevole risparmio.
SoylentGray,

2
Qualcosa mi dice che l'esecuzione del compilatore JavaScript su larga scala e diverse esecuzioni di ottimizzazione sulla rappresentazione interna, tutto ciò spesso implementato in Java non è un sovraccarico della CPU .
Oleg V. Volkov il

5

Minification + gzip generalmente dà risultati migliori, perché gzip è un algoritmo generale, non specificamente adattato a un input o all'altro, mentre il minificator è consapevole del suo contenuto e può fare un lavoro che l'algoritmo di compressione generale non può fare. Può permettersi di essere anche in perdita (pensa: elimina completamente i commenti e gli spazi bianchi: è una compressione del 100% per questi dati, come puoi batterli?), Mentre la compressione generale non può.


2

Potresti non ottenere troppi vantaggi in termini di prestazioni ma ridurrai comunque l'utilizzo della larghezza di banda. Se riesci a radere qualche kb dai tuoi file js (e css) attraverso la minimizzazione (e l'uso di sprite css per ridurre il numero di richieste) e stai servendo migliaia di utenti al giorno, dopo un mese ridurrai significativamente la larghezza di banda.


1
+1: la minimizzazione riguarda il risparmio in totale. Potrebbe aiutare una singola richiesta a essere più veloce, ma il punto è ridurre l'utilizzo della larghezza di banda nel tempo.
Joel Etherton,

1

L'unica cosa più costosa che fai in un'applicazione web è inviare cose via cavo. Inviare meno roba sul filo è quasi sempre una vincita netta se si paga in cicli di CPU.

Inoltre, non ho nulla di scientifico a sostegno di questo, ma mi aspetto che gli strumenti di minificazione possano probabilmente comprimere javascript meglio di gzip se per nessun altro motivo che gli strumenti di minificazione sono specifici del dominio e possono essere sintonizzati per comprimere meglio javascript mentre gzip è uno strumento generico e scenderà a compromessi nel mezzo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.