javascript - obfuscator - minify js gulp
¿Es malo codificar Base62 un archivo javascript? (2)
Acabo de encontrar el empaquetador javascript de Dean Edwards aquí: http://dean.edwards.name/packer/
Tiene un par de opciones,
- Codificar en base62
- Reducir las variables
Para probarlo tomé la última versión de jquery que ya está reducida a 56kb y la ejecuté en esa página anterior con variables de reducción, el resultado es el mismo tamaño de archivo, 56kb.
Luego volví a ejecutar el archivo original con la codificación Base62 y las variables Reducir seleccionadas y el resultado fue un archivo de 42 kb.
Ahora no sé mucho acerca de la reducción y el empaquetado, pero reduce el tamaño del archivo. Pero tengo curiosidad por lo que está haciendo la codificación Base62, ¿es malo usarlo? ¿Veo que hace el archivo mucho más pequeño pero crea más trabajo / carga más adelante para decodificarlo en la página?
La base 62 no es más que una notación posicional . Es decir, se puede utilizar para representar texto normal muy largo en una versión más corta.
El uso de Base62 agrega un paso adicional antes de que los clientes puedan utilizar js. Para jQuery tipo de biblioteca, este paso puede tomar de 100ms a 500ms de tiempo adicional en los clientes, dependiendo de muchos factores.
Ahora podemos comparar la reducción en el tiempo para descargar el script al tiempo adicional que se tarda en ejecutar el script. Puede reducir el tiempo de descarga en 50 ms, pero requiere 100 ms adicionales para procesarlo. ¡¡Rendimientos decrecientes!!
Se crea más trabajo en el cliente. El cliente tiene que ejecutar el código para decodificar el script codificado. Esto es bastante obvio si ingresas solo un poco de código en el bloque de codificación.
Por ejemplo:
var a = 10;
Codifica como:
eval(function(p,a,c,k,e,r){e=String;if(!''''.replace(/^/,String)){while(c--)r[c]=k[c]||c;k=[function(e){return r[e]}];e=function(){return''//w+''};c=1};while(c--)if(k[c])p=p.replace(new RegExp(''//b''+e(c)+''//b'',''g''),k[c]);return p}(''0 1=2;'',3,3,''var|a|10''.split(''|''),0,{}))