Optimización de la web de Foto DNG (parte III)

Imágenes

En esta ocasión vamos intentar evitarnos unos cuantos bytes con el uso de imágenes optimizadas y realizar caché de las mismas.

El primer paso es la optimización del logo, la imagen logo.gif que se carga en todas las páginas de la web, es un archivo de 2,99 KB (3.069 bytes). Después de abrirlo con el PhotoShop y guardarlo para web como png-8 con una paleta de 6 colores (con menos perdía calidad) nos queda un png de 1.958 bytes (una buena mejora), pero vamos a optimizarlo un poco más, para lo cual utilizamos pngslim (http://people.bath.ac.uk/ea2aced/tech/png/pngslim.zip) que hace uso de las siguientes herramientas:

– advdef.exe (and zlib.dll) v1.15 (31-Oct-2005)
http://advancemame.sourceforge.net/comp-readme.html

– DeflOpt.exe v2.06 (28-Apr-2007) by B.J.Walbeehm
http://www.walbeehm.com/download/

– OptiPNG.exe v0.5.5 (28-Jan-2007) by C.Truta
http://optipng.sourceforge.net/

– pngout.exe (22-Apr-2007) by K.Silverman
http://advsys.net/ken/utils.htm

– pngrewrite.exe v1.2.1 (9-Feb-2003) by J.Summer
http://entropymine.com/jason/pngrewrite/

el proceso es tan sencillo como arrastar la imagen hasta el archivo pngslim.cmd y nos optimiza el png hasta dejarlo en 1.742 bytes.

Hemos reducido el tamaño del logo de la página desde 3.069 bytes (lo cual ya estaba bastante bien) hasta unos increíbles 1.742 bytes sin ninguna pérdida de calidad apreciable.

Optimización de PNG's

Los demás archivos que han sufrido el proceso (conversión a png y optimización con pngslim):

 OriginalPNGPNG Optimizado
logo.gif3.069 bytes1.958 bytes1.742 bytes
feed.gif1.561 bytes536 bytes454 bytes
feed_r.gif445 bytes517 bytes433 bytes
flecha_dere.gif846 bytes162 bytes95 bytes
redondeado.gif1.345 bytes363 bytes201 bytes
lulu-logo.gif1.878 bytes764 bytes659 bytes
mail_dng.gif688 bytes493 bytes400 bytes
logo_mail.jpg13.256 bytes8.724 bytes4.367 bytes
TOTAL23.088 bytes13.517 bytes8.351 bytes

 

Como podremos observar en la tabla anterior, reducimos el tamaño de las imágenes a casi un tercio, como siempre, esto se hará notar cuando las peticiones sena muchas. En algún caso en particular (external_link.gif y flecha.gif) mantenemos el archivo original de 76 bytes, pues en png crece hasta 130 bytes y 110 bytes respectivamente.

Ahora lo subimos a static.fotodng.com para servir las imágenes desde esa dirección y le añadimos una fecha de expiración de 30 días para que utilice las imágenes de caché en vez de volver a solicitarlas. Esto tiene el riesgo de que si cambiamos la imagen, muchos usuarios seguirán viendo la antigua, por lo que deberemos cambiarle el nombre. Al utilizar caché también para los css y javascript (además de compresión gzip), para posteriores cambios deberemos renombrar los archivos, por lo que una buena práctica será utilizar la versión en el nombre de archivo (estilos_v1.css, estilos_v1_1.css, etc).

Al servir las imágenes desde Google APP Engine ™, estamos utilizando un CDN (http://en.wikipedia.org/wiki/Content_Delivery_Network) al igual que con las imágenes servidas desde Amazon S3 ™ (en los concursos del 2006 y 2007, posteriormente pasaremos las del 2008 a S3).

Normalmente al visualizar una página, el navegador no suele descargar más de dos objetos en paralelo desde cada servidor (imágenes, html, javascript, css, etc…), si aumentamos el número de servidores distintos (www.fotodng.com, static.fotodng.com), aceleramos el número de descargas paralelas de componentes, aunque perdemos un tiempo en la búsqueda de DNS’s. La recomendación es utilizar de dos a cuatro diferentes hostnames.

http://developer.yahoo.com/performance/rules.html#dns_lookups

Al utilizar un CDN, el contenido será servido por el servidor más cercano a nosotros o el que nos ofrezca mejores tiempos de respuesta.

Las imágenes JPG’s podemos someterlas al mismo proceso de optimización, para lo cual utilizaremos jpegtran (http://jpegclub.org/jpegtran/)

ej: jpegtran -copy none -optimize -perfect src.jpg dest.jpg

e ImageMagick (http://www.imagemagick.org).

Además podemos utilizar Irfanview para optimización por lotes (existen archivos bat para conversión por lotes de jpegtran e ImageMagick acepta caracteres comodín).

Después de realizar diversas pruebas con los programas mencionados anteriormente sobre los archivos del los concursos del 2006 y 2007, hemos reducido un poco el tamaño total del directorio, pero en esta ocasión dejaremos las imágenes que ya teníamos (imágenes medianas y miniaturas generadas desde PHP con GD, ya bastante optimizadas debido a los parámetros utilizados), debido a la poca diferencia en tamaño de cada imagen y también a que las servimos desde Amazon S3 ™ (CDN) con el consiguiente aumento de velocidad.

Nuestra siguiente optimización será respecto a los CSS y los javascript’s, pero necesitaremos algo más de tiempo debido a que actualmente estos son generados dinámicamente y deberemos cambiar este comportamiento.

Actualmente el mayor tiempo de carga está en el javascript que cargamos en cada página, ahí debemos optimizar mucho para mejorar sustancialmente los tiempos de carga.

Tiempos de carga de la página con la herramienta de Pingdom http://tools.pingdom.com/

 

Tiempos de Carga

 

 

carga_pagina2

Sección Patrocinada por:

Sección patrocinada por...