Chalalo Land

Tecnologías ASP.NET y un poco Más

Contacto

Siempre al Día!:

Suscribirse al Blog!

Consultas Técnicas:


En Twitter!


Comunidades Técnicas Chile:

De donde me Visitan?

Locations of visitors to this page

Tech days 2009

CMC

Recent Posts

Tags

Community

Blogs de MVP

Blogs Microsoft

Amigos Geeks

Blogs Imperdibles

GODS

Team Ajax Control Toolkit

Mi Trabajo

Archives

Email Notifications

Hot Topics

[Tutorial] Microsoft Ajax Minifier – Optimiza tus archivos Javascript

Hola, que tal, comienzo una serie de post y screencast sobre como mejorar la performance de nuestras aplicaciones Web, en especial (obviamente) ASP.NET, hay algunos datos que van a servir para PHP, estoy leyendo un libro buenísimo sobre ….

Microsoft Ajax Minifier

Es una herramienta que nos va a permitir mejorar el rendimiento de nuestras aplicaciones que utilizan Javascript, como las ajax (que como ya saben , utilizan bastante), ya que reduce el tamaño de los mismos, admitiendo dos niveles de minificación (diferenciando de compresión).

Normal Crunching
Se realiza el proceso de minificación del js, eliminando los espacios en blanco, puntos y comas y llaves innecesarias, como así también los comentarios (que son necesarios en tiempo de desarrollo, pero en explotación no)

Código Normal

if ( a == 0 )
{
    a = 10;
}

Normal Crunching

if(a==0)a=10;

Hyper Crunching
Se realiza el proceso de minificación, además acortando los nombres de las variables locales , nombres de funciones y eliminando lo innecesario.

Código Normal
function DivideTwoNumbers(numerator, denominator, unsedparameter )
{
    return numerator / denominator;
}
Hyper Crunching
function a(a,b){return a/b}

El Microsoft Ajax Minifier incluye los siguientes componentes:

  • Herramienta de Línea de Comandos: Nos permite minimizar los archivos JavaScript mediante la línea de comandos.
  • MSBuild Task: Permite minificar el archivo Javascript en Visual Studio, automáticamente cuando generas tu proyecto.
  • Componente: Permite usar el Microsoft Ajax Minifier programáticamente.

Ejemplo 1- Pequeña Sección de Código

Vamos a tener un archivo llamado funcion.js el que tiene el siguiente contenido (tomado prestado por ahi…)

function borra(opt) {
    var temp = opt.options.length;
    for (var x = 0; x < temp; x++) {
        opt.options[temp - x] = null;
    }
}

Al aplicar MAM con Normal Crunching, por línea de comandos:

C:\Program Files\Microsoft\Microsoft Ajax Minifier>ajaxmin prueba.js -o prueba.m
in.js.

Veamos los resultados:image

El archivo pesa ahora 92 bytes, en comparación con los 123bytes del archivo normal, si vemos el contenido del archivo veremos:

function
borra(opt) { for (var temp = opt.options.length, x = 0; x < temp; x++) opt.options[temp - x] = null }

Es decir el archivo final es aprox 25% más pequeño que el original

Ahora a aplicar Hyper Crunching

C:\Program Files\Microsoft\Microsoft Ajax Minifier>ajaxmin -hc prueba.js -o prue
ba.min.hc.js

image

El archivo pesa 77 bytes, por lo que es 37% menor al archivo original, si vemos el contenido del archivo veremos:

function borra(c) { for (var b = c.options.length, a = 0; a < b; a++) c.options[b - a] = null }

Ejemplo 2 – Archivo Real tomado de un Website

Para este ejemplo “tome prestado” un archivo JS de un Website de una Universidad, el archivo pesa 29.778 Bytes. No vamos a detallar nuevamente el proceso, en lugar de eso , quiero que veamos una tabla comparativa de los resultados:

image

Utilizar Microsoft Ajax Minifier desde Visual Studio

Cuando terminamos la instalación vemos que se crea un nuevo MSBuild en C:\program Files\MSBuild\Microsoft\MicrosoftAjax

image

Lo que debemos hacer ahora, es modificar el archivo del proyecto (.vbproj) , para esto lo puedes hacer con notepad o también puedes descargar el proyecto mediante visual studio y luego modificar el archivo, dentro del tag <Proyect> vamos a incluir lo siguiente:

<Import Project="$(MSBuildExtensionsPath)\Microsoft\MicrosoftAjax\ajaxmin.tasks" />
<Target Name="AfterBuild">
   <ItemGroup>
     <JS Include="**\*.js" Exclude="**\*.min.js;Scripts\*.js" />
   </ItemGroup>
   <AjaxMin SourceFiles="@(JS)" SourceExtensionPattern="\.js$" TargetExtension=".min.js" />
</Target>

Luego guardar y al recargar el proyecto elije la opción cargar normalmente del cuadro de diálogo:

image

Ahora al presionar F5(Build) , vamos ver que se genera automáticamente el archivo js min.Si no lo notamos de inmediato, es por que no hemos puesto la opción de ver todos los archivos:

image

Ahora puedes ver el archivo generado funciones.min.js ya en tu proyecto, todo archivo JS va a ser minificado :).

Una aclaración, esto no es compresión, sino minificación, la compresión la podemos hacer con gzip y obtenemos aún mejores resultados (a costa de tiempo de cpu).

Espero que te sirva!
Gonzalo.

Comentarios

Paolo ha opinado:

Ups!

El comentario que deje en el post "[Tips] RockScroll Una gran ayuda para Visual Studio" va en este post xD.

Lo siento

Saludos

# November 17, 2009 1:33 AM

Marcelo Woloszyn ha opinado:

Excelente tutorial, gracias Gonzalo.

# November 17, 2009 12:58 PM

José M. Aguilar ha opinado:

Muy buen post, Gonzalo!

Gracias por compartir esta información. :-)

Saludos.

# November 17, 2009 5:37 PM

Gonzalo Perez ha opinado:

gracias por los comentarios :)

# November 18, 2009 3:24 AM

preguntoncojonero ha opinado:

señor, Con un csproj funciona igual ??

salu2&grz

# December 14, 2009 4:42 PM

Gonzalo Perez ha opinado:

a mi parecer el Normal Crunching funcionaría.

Saludos,

g

# December 14, 2009 9:27 PM

Chalalo Land ha opinado:

Hace un tiempo escribí el artículo: geeks.ms/.../tutoturial

# February 16, 2010 8:43 PM

pablo ha opinado:

wilder

# March 16, 2010 7:23 PM
Deja tu comentario

(requerido) 

(requerido) 

(opcional)

(requerido)