Si te gusta este blog...
¡Visita mi blog en inglés!
Justo despues de volver de Canada, estuve en un evento en Madrid en el que se presentaba en España la red social Facebook de la mano de Fon. El evento fue a finales de febrero y durante el mismo, un equipo de Simyo se subió al estrado para dar a conocer el concurso de desarrollo para facebook de Simyo. El objetivo era crear una aplicación que sirviera para promover Simyo dentro de las redes sociales como un canal complementario a sus campañas de marketing.
Después de un mes de trabajo duro, aprendiendo a programar aplicaciones en
facebook y despues de montar la infraestructura necesaria, gané el concurso con
la aplicación 'Llama gratis con Simyo'.
(Sigue el enlace para ver unos videos de la aplicación, no te asustes por el
inglés)
De qué va la aplicación
Llama gratis con Simyo es una aplicación web construida sobre la red
social Facebook que permite hacer llamadas gratuitas con los móviles
que ya llevamos siempre encima y sin necesidad de usar un ordenador,
independientemente de la operadora que uses y solamente a cambio de
escuchar una cuña publicitaria de Simyo.
Algo más de un año después de los últimos cambios he terminado con el rediseño de la web. Las novedades más importantes son:
Cosas que he aprendido:
¿Qué opináis? Acepto sugerencias para mejorar :)
Me lié al calcular los porcentajes el otro día en el post sobre la compresión javascript. Pablo me ha mandado un email en el que descubre el problema y aporta luz sobre el tema. ¡Muchas gracias Pablo!
Date: Thu, 3 May 2007 12:20:42 +0200 From: Pablo Cristóbal del Río Subject: porcentajes To: David Grajal
Hola Cuidado cuando dices: "Hemos reducido 3 peticiones a una sola y hemos reducido el peso de los scripts en un 550%." Si una cosa la reduces un 550% quiere decir que pasas de X a X * (1 - 5,5) = -4.5*X (negativo)
Pasar de 88 a 16 es reducirlo al 18,18%, o bajarlo un 81,82 %. Además, pasar de 16 a 88 es subirlo un 450%, no un 550%, por la misma razón que pasar de 100 a 100 es subirlo un 0%, o quedarse con el 100% de 100.
Desde la aparición en la escena del concepto de la web2.0, las páginas web han trasladado una parte de lógica importante al navegador para construir la interfaz de usuario. Mucha de esta lógica hace uso de pesadas librerías javascript de muchos kilobytes. Para asegurarnos de que la experiencia es tan agradable al visitante como pretendemos es necesario optimizar la página. Optimizarla significa tener un servidor eficiente (en software y hardware) y tener unos recursos ligeros que hagan que la página se descargue rápido.
En mi página no necesito preocuparme demasiado ya que recibo una cantidad irrisoria de visitas, pero el año pasado tuve problemas con el tamaño y el número de las peticiones de las librerías javascript. En las últimas obras añadí el script lightbox para mostrar con una animación superpuesta las fotos de este sitio web. No soy muy amigo de las chorraditas que se mueven pero este es un script estupendo porque es muy cómodo y porque no es nada invasivo¹. El script requiere del uso de dos archivos de la librería scriptaculous. Esto suponía tres peticiones independientes al servidor web de ficheros fuente bastante pesados.
Al tener varios ficheros pesados aumenta la latencia ya que se tarda más en bajarse los elementos que componen la página y el resultado es que nuestro visitante se desespera y se larga. En mi caso concreto, se tardaba unos cuantos segundos más en cargar la web de los que consideraba aceptable.
A continuación explicaré el proceso de limpieza de código que se realizó en esta web. Mostraré las instrucciones usadas para Linux pero deberían funcionar en MacOS. Antes de nada decir que es un método sencillo, rápido, eficiente y sobre todo seguro pero no es el que más nos optimiza el resultado. Esto lo aclararé al final del post.
cat scriptaculous/prototype.js > all_js.js cat scriptaculous/effects.js >> all_js.js cat lightbox.js >> all_js.js
Limpiamos el código con JSMIN. Nos quitará los comentarios, los espacios en blanco, los saltos de linea y los tabuladores innecesarios. Cuidado con el programa, por defecto nos sobreescribirá el fichero que le introducimos por parámetro así que recuerda tener el fichero original a buen recaudo por lo que pueda pasar.
En su página web puedes descargarte el binario para ms-dos y también te puedes bajar el código fuente en C. También se encuentra disponible para descarga como código fuente en C#, Java, Javascript, Perl, PHP, Python y Ruby. En nuestro caso usaremos el código fuente para crear un ejecutable con el que procesar nuestros ficheros.
Compilamos jsmin
gcc jsmin.c -o jsmin.out
Y lo usamos atacando nuestro fichero all_js.js y poniendo el resultado en all_js_min.js
./jsmin.out < all_js.js > all_js_min.js
gzip -9 -c all_js_min.js > all_js_min.js.gz
‹script src="/css/js/all_js_min.js.gz" type="text/javascript"›‹/script›
Decir que algunos frameworks ya incorporan la compresión javascript de serie (Dojo) y que entonces no seria necesario seguir estos pasos. En cualquier caso, si algún lector ha usado alguno de los otros métodos que no dude en ponerse en contacto conmigo para comentarme su experiencia.