Presentador Virtual e24Presenter
Encuentra usuarios de Twitter en tu ciudad con LocaFollow

votarCompresores de Javascript

Autor: aartiles | Archivado en: JavaScript, Recursos el día 4/Ene/2009

Aunque ya son conocidos muchos de los compresores de javascript, hoy he estado buscando en Google sobre el tema y solo me he encontrado posts desactualizados y muy pocas comparativas en español que nos permitan tomar una decisión acertada.

En general los compresores de javascript se encargan de eliminar toda aquella información inútil para el intérprete de javascript, como los comentarios, espacios en blanco, tabulaciones, cambios de líneas innecesarios y algunos incluso achican los nombres de las variables y funciones para así obtener la máxima compresión y ofuscación posible.

Yo suelo compactar mis scripts más por ganar en velocidad de descarga que por ofuscar el código. Que copien mis códigos no me preocupa pues siempre termino publicándolos en algún sitio. No obstante siempre hay quien prefiere evitar que su código sea modificado y esta es una buena vía.

Aquí os dejo una comparativa de compresores de javascript, los más conocidos y otros que no sabía que existían y que he ido encontrando mientras escribía este post. Para la comparación he utilizado una archivo javascript de 82.6Kb y lo he comprimido con cada herramienta. Aunque no todos scripts se compactan con la misma eficiencia en dependencia del código utilizado, esto al menos nos dará una idea de la ganancia que obtendremos con cada herramienta.

YUI Compresor [Descargar]

Características:

  • Renombra variables locales
  • Elimina espacios en blanco y cambios de líneas
  • Elimina comentarios
  • Compacta también CSS
  • Requiere Java 1.4 o superior

Forma de Uso:

  1. Descompactamos el paquete descargado
  2. A través de línea de comandos nos movemos al directorio “build”
  3. Ejecutamos la siguiente línea de comandos, donde “archivo_original” es el camino completo archivo que deseamos comprimir y “archivo_comprimido” es el camino completo del archivo que resultará después de comprimido, si no existe se creará.
1
java -jar build/yuicompressor-2.1.1.jar archivo_original –o archivo_comprimido

Compresión Obtenida: 44.2Kb (44%)

JSMin [Descargar]

Características:

  • Elimina espacios en blanco y cambios de líneas
  • Elimina comentarios
  • Funciona solo con juegos de caracteres ASCII o UTF-8
  • Código fuente disponible en varios lenguajes como C, C#, Java, Javascript, PHP, etc, por lo que lo podemos utilizar en nuestros proyectos.

Forma de Uso:

  1. Descompactamos el paquete descargado
  2. A través de línea de comandos nos movemos al directorio descampactado
  3. Ejecutamos la siguiente línea de comandos, donde “archivo_original” es el camino completo archivo que deseamos comprimir y “archivo_comprimido” es el camino completo del archivo que resultará después de comprimido, si no existe se creará. Si deseamos que se incluya un texto de copyright al inicio, opcionalmente podemos pasar “texto_copyright”. Note que los caracteres “<” y “>” son parte del comando y deben mantenerse.
1
jsmin  archivo_comprimido "texto_copyright"

Miguel Carmona ha desarrollado una versión online de JSMin
Compresión Obtenida: 60.4Kb (27%)

ShrinkSafe [Descargar] [Versión UTF-8]

Características:

  • Renombra variables locales
  • Elimina espacios en blanco y cambios de líneas
  • Elimina comentarios
  • Compacta también CSS

Forma de Uso:

  1. A través de línea de comandos nos movemos al directorio donde está el .jar descargado
  2. Ejecutamos la siguiente línea de comandos, donde “archivo_original” es el camino completo archivo que deseamos comprimir y “archivo_comprimido” es el camino completo del archivo que resultará después de comprimido, si no existe se creará.
1
java -jar shrinksafe.jar archivo_original &gt; archivo_comprimido

No pude comprimir archivo de ejemplo utilizado puesto que me dio el siguiente error:

1
2
3
4
5
6
7
8
9
Exception in thread "main" java.lang.NoClassDefFoundError: org/mozilla/javascript/ErrorReporter
Caused by: java.lang.ClassNotFoundException: org.mozilla.javascript.ErrorReporter
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)

Dean Edwards Packer
Está disponible como herramienta online(Javascript), muy cómodo si no queremos complicarnos con líneas de comandos. Pero también lo tenemos en infinidad de sabores: como ejecutable, .Net, Perl, Wsh, PHP5, y como plugin de Aptana.

Características:

  • Renombra variables locales
  • Elimina espacios en blanco y cambios de líneas
  • Elimina comentarios
  • Debido a que está basado en expresiones regulares presenta problemas con syntaxis poco convencionales como la del framework Prototype

Compresión Obtenida: 59.9Kb (27%)

CSS & JavaScript Compressor
Disponible como herramienta online. No encontré información de cómo comprime, pero también puede ser una buena opción si queremos olvidarnos de líneas de comando.

Compresión Obtenida: 49.8Kb (40%)

Bananascript.com

Características:

  • Es una herramienta online, su creador asegura que los scripts serán eliminados del servidor pasado 24 horas de su compresión.
  • Renombra variables locales
  • Elimina espacios en blanco y cambios de líneas
  • Elimina comentarios
  • Compacta también CSS

Compresión Obtenida: 22.1Kb (73%)

CompresorJavascript

Es otra herramienta online muy fácil de usar. Su grado de compactación es bastante alto, pero utiliza un algoritmo de compactación y luego se descompacta antes de ejecutarse haciendo uso de la función “eval” de javascript. Por este motivo no lo recomiendo porque implica un procesamiento extra que puede ralentizar la ejecución de la página y tal vez no compense la velocidad de descarga ganada.

Compresión Obtenida: 35.0Kb (58%)

Resumiendo:

Compresor Tamaño Obtenido Compresión
YUI Compresor 44.2Kb 44%
JSMin 60.4Kb 27%
ShrinkSafe - -
Dean Edwards Packer 59.9Kb 27%
CSS & JavaScript Compressor 49.8Kb 40%
Bananascript.com 22.1Kb 73%
CompresorJavascript 35.0Kb 58%
Alfredo ArtilesSoy Alfredo Artiles, Co-Fundador de equipo24, e24Presenter y e24Apps. Mi pasión es el AJAX, SEO, SEM y emprender todo lo que se me ponga por delante. Si me necesitas estoy 24x7 en Twitter @aartiles24.

Tags: , , ,
  • Digg
  • del.icio.us
  • Facebook
  • Google
  • LinkedIn
  • Meneame
  • MySpace
  • Technorati
  • TwitThis
Posts Relacionados

9 Comentarios on “Compresores de Javascript”

  1. #1 7 Compresores de Javascript comparados dijo 7:46 pm el Enero 4th, 2009:

    [...] 7 Compresores de Javascript comparadoswww.bitacoradewebmaster.com/2009/01/04/compresores-de-javasc… por lia hace pocos segundos [...]


  2. #2 7 Compresores de Javascript comparados dijo 8:29 pm el Enero 4th, 2009:

    [...] 7 Compresores de Javascript comparadosBitácora de Webmaster nos trae una compativa de 7 compresores de javascript. Muy útil para decidir cual utilizar según su grado de compactación u ofuscación. Ver más… www.bitacoradewebmaster.com/2009/01/04/compresores-de-javasc… por lia hace pocos segundos  sin comentarios en: tecnología, internet karma de la noticia: 6 etiquetas: javascript, compactar, recursos, ofuscar votos negativos: 0  usuarios: 1  anónimos: 0   [...]


  3. #3 Compresors de Javascript [CAST] // la tafanera dijo 10:51 am el Enero 5th, 2009:

    [...] Compresors de Javascript [CAST]www.bitacoradewebmaster.com/2009/01/04/compresores-de-javasc… per Nech fa pocs segons [...]


  4. #4 Álvaro G. Vicario dijo 4:33 pm el Enero 5th, 2009:

    El truco de Bananascript parece ser empaquetar todo el código fuente original en un string binario y descomprimirlo con un poco de eval(), conque yo diría que se le aplican las mismas reservas que a CompresorJavascript.


  5. #5 Versión online de YUI Compressor - Bitácora de Webmaster dijo 1:52 am el Enero 13th, 2009:

    [...] pasada semana pasada os dejé una comparativa de los compresores de javascript más usados. Entre ellos YUI compressor, en mi opinión el de mejores prestaciones en cuanto a [...]


  6. #6 Cómo crear un bookmarklet - Bitácora de Webmaster dijo 8:45 am el Enero 18th, 2009:

    [...] El código javascript no debe contener cambios de líneas y no debe ser demasiado extenso, esto un compresor de javascript nos lo puede facilitar. Para usar un bookmarklet basta con añadirlo a los favoritos como un enlace [...]


  7. #7 Citrico dijo 4:42 am el Marzo 25th, 2009:

    Exelente analisis estaba buscando algo asi, y en efecto “CompresorJavascript” es el que mas tasa de compresion tiene, probe varios y ese resulto el mejor.


  8. #8 r0b07r0n1c dijo 6:27 pm el Junio 4th, 2009:

    Existe un problema en la compresión de javascripts si estos van a ser usados con elementos ajax, lo digo porque tengo mootools instalado para trabajar con un javascript personal y solo es posible hacer la ejecución siempre y cuando este no esté comprimido….


  9. #9 damvaz dijo 5:10 pm el Junio 8th, 2009:

    Tambien esta el JASOB.
    http://www.jasob.com



Deja un comentario.