javascript - online - minify
¿Hay algún beneficio para minificar JavaScript antes de gzip? (5)
En cuanto al tamaño de archivo sin formato, aquí hay una muestra (jQuery 1.4.2):
$ curl http://code.jquery.com/jquery-1.4.2.js | gzip > jquery.gz
$ curl http://code.jquery.com/jquery-1.4.2.min.js | gzip > jquery-min.gz
$ ls -la jquery*
-rw-r--r-- 1 me staff 24545 Apr 7 12:02 jquery-min.gz
-rw-r--r-- 1 me staff 45978 Apr 7 12:02 jquery.gz
Entonces la versión minificada es aproximadamente la mitad del tamaño.
¿Hay algún propósito válido para minificar antes de comprimir? Parece muy poco probable que el archivo gzip sea más pequeño si se minimiza primero.
Lo pregunto porque diagnosticar problemas de producción en un código reducido es sustancialmente más difícil, y me pregunto si las personas se están sometiendo a eso sin ningún sentido.
Sí, definitivamente hay un beneficio.
Minificar es una compresión con pérdida mientras que gzipping es sin pérdida. Ergo, al minimizar, eliminas los datos innecesarios (como los comentarios y los nombres variables largos), lo que siempre ayudará a que tu archivo sea más pequeño. Incluso con gzip todavía habrá una diferencia en la mayoría de los casos.
Ejemplo:
function foo(this_is_my_variable){
var this_is_my_other_variable = 0;
this_is_my_other_variable = this_is_my_other_variable + this_is_my_variable;
return this_is_my_other_variable;
}
Eso podría ser reducido a:
function foo(a){
var b = 0;
b = b +a;
return b;
}
O si el minificador es inteligente:
function foo(a){
return a;
}
Todo el código da los mismos resultados, pero el tamaño difiere mucho.
Siempre he visto una reducción notable en el número final de bytes cuando minimizo antes de gzip.
Tengo una secuencia de comandos php de trabajo de 20 minutos que interactúa con el compresor yui, y el compilador de cierre de Google. Me muestra antes y después de los bytes, incluso después de gzip, así que es bastante fácil de verificar.
Tal vez. Más allá de la eliminación del espacio en blanco, la minimización de JavaScript puede conducir a más repeticiones del mismo texto, lo que puede significar una compresión ligeramente mayor con gzip. Afortunadamente, es fácil hacer un antes y un después, ya que la herramienta de línea de comandos gzip
, común en * nix y disponible para Windows usa el mismo algoritmo de compresión (aunque no exactamente el mismo formato).
También puede ayudar a acelerar el análisis del código de JavaScript en el navegador. Dependiendo del tamaño de sus archivos, el navegador puede pasar una gran cantidad de tiempo analizando y simbólicamente el archivo que se reducirá mediante la minificación.
Por supuesto, solo la evaluación comparativa y la creación de perfiles le indicarán si eso realmente será un beneficio para su situación particular.
Lo que considero que funciona mejor es que guardo las versiones minimizadas y no minificadas de todos mis archivos .js en mi sitio web y simplemente utilizo un conmutador de configuración para cambiar entre los dos. De esta forma, la producción normal puede usar la versión minimizada y luego, si tengo que depurar algo, simplemente active el interruptor y la versión no ministrada se servirá en su lugar. (El proceso de compilación garantiza que las versiones minimizadas y no minificadas estén sincronizadas, por supuesto)