2009-08-29 12 views
20

me acaba de encontrar Dean Edwards empacador Javascript aquí: http://dean.edwards.name/packer/¿Está mal que Base62 codifique un archivo javascript?

Tiene un par de opciones,

  1. Base62 codificar
  2. Compactar las variables

Para probarlo me tomó la última versión de jquery que ya está minimizada a 56kb y la ejecutó en esa página arriba con variables de contracción, el resultado es el mismo archivo de tamaño, 56kb.

Luego, volví a ejecutar el archivo original con la codificación Base62 y las variables de reducción seleccionadas y el resultado fue un archivo de 42kb.

Ahora no sé mucho sobre la minimización y el embalaje de otros, entonces hace que el tamaño del archivo sea más pequeño. Pero tengo curiosidad sobre lo que está haciendo la codificación de Base62, ¿es malo usarla? Veo que hace que el archivo sea mucho más pequeño, pero ¿crea más trabajo/carga más tarde para decodificarlo en la página?

Respuesta

34

Base 62 es nada más que un positional notation. Es decir, puede usarse para representar texto normal muy largo en una versión muy corta.

El uso de Base62 agrega un paso adicional antes de que los clientes puedan poner la js. Para el tipo de biblioteca jQuery, este paso puede tomar de 100 ms a 500 ms adicionales en los clientes, dependiendo de muchos factores.

Ahora podemos comparar la reducción en el tiempo para descargar el script con el tiempo extra necesario para ejecutar el script. Puede reducir el tiempo de descarga en 50 ms, pero toma 100 ms adicionales para procesarlo. ¡¡Rendimientos decrecientes!!

+0

buenos puntos, gracias, tal vez debería permanecer alejado de él – JasonDavis

+0

También me gustaría añadir que este es un buen sustituto si el servidor no gzip respuestas. También solo apunte a archivos únicos de la aplicación y no a las bibliotecas debido al trabajo adicional. –

16

Crea más trabajo en el cliente. El cliente debe ejecutar el código para decodificar el script codificado. Esto es bastante obvio si ingresas solo un poquito 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,{})) 
Cuestiones relacionadas