viernes, 26 de diciembre de 2008

YSlow

http://developer.yahoo.com/yslow/

Complemento para Firebug que analiza las página según las best practices de rendimiento de sitios web del equipo Exceptional Performance de Yahoo.

viernes, 19 de diciembre de 2008

webpagetest.org

Me hago eco de esta reseña de la herramienta http://www.webpagetest.org/ que Martín hace en su blog.

No la he probado pero tiene muy buena pinta. Ahí está el artículo: http://brigomp.blogspot.com/2008/12/probando-el-rendimiento-de-pginas-web.html

domingo, 14 de diciembre de 2008

highscalability.com

Gracias a este post en el blog de Pensamientos Ágiles he descubierto uno de los mejores blogs/sites relacionados con la escalabilidad y cloud computing:

http://highscalability.com/

Artículos muy buenos y los enlaces también. Por cierto, muy chula la serie de artículos "Real Life Architectures", con notas acerca de la arquitectura de Amazon, Google, Flickr, Twitter, YouTube, eBay, Digg, MySpace...

P.D: Ya estoy viendo a mi amigo cmaJ haciendo palmas con las orejas por poder cotillear sobre estos grandes... ;-)

martes, 9 de diciembre de 2008

Eliminar ETags para incrementar el rendimiento

Esto es algo que sigo sin entender, y que encima está por defecto en Apache: si para comprobar que es correcta la versión de un contenido que el navegador tiene cacheada se envía la cabecera "If-Modified-Since"... ¿por qué además existen los headers ETag en respuestas y posteriores If-None-Match en peticiones? (Nota para despistados: el ETag es como una especie de digest cutre del fichero).

Y para más coña, Apache lo genera por defecto a partir del INode, Fecha y Tamaño del fichero en cuestión. Desde mi punto de vista no aporta nada, consume recursos, obliga a enviar cabeceras innecesarias, y además puede dar "falsos negativos" en granjas o entornos balanceados o después de un despliegue de una aplicación (mismo fichero pero en otro inodo!).

iPlanet / Sun ONE Web Server (al menos hasta la versión 6.1) también lo pone por defecto y también se recomienda eliminarlo para mejorar el rendimiento.

Pero además, en Apache me he encontrado con otro problema: si está activado el mod_deflate para la compresión de contenidos, Apache nunca se da por enterado de que el fichero solicitado sí es el mismo que tiene el usuario en su cache, así que siempre devuelve un "200 OK" + todo el contenido, en lugar de un "304 Not Modified". Es porque al ETag enviado al cliente se le añade el sufijo "-gzip" al ETag, y es lo que el cliente envía de vuelta... pero por lo que sea Apache no es capaz de entender que el ETag con GZIP debería ser el mismo que el ETag sin GZIP. Es decir, da igual cómo se haya transportado el contenido, lo importante es si lo que hay en el servidor es lo mismo que tiene la caché del cliente ¿o no?

Bueno. ¿Y cómo se elimina? Afortunadamente de forma muy sencilla (para Apache):

FileETag None

Y para iPlanet 6.1 también es trivial:

<Object name="default">
   (...)
   Output fn="set-variable" remove-srvhdrs="etag"
</Object>

Para más información de por qué esto mejora el rendimiento:

Dejo por aquí también referencia al RFC de HTTP/1.1 en lo que a cabeceras se refiere. Cuántas veces he tirado de él y qué poco de moda está a día de hoy tener tiempo para leer RFCs, sino mejor buscar en blogs... ;-)

viernes, 5 de diciembre de 2008

martes, 2 de diciembre de 2008

Ahora sí: Java 6 update 11

Pues unas horas después de la salida nula... ya está disponible el 6u11 en http://java.sun.com/javase/downloads/.

Como os comentaba, y podéis ver en las notas de la versión, incluye:
  • 13 fixes de vulnerabilidades de seguridad.
  • 18 fixes de otros bugs, sólo uno de Hotspot, y principalmente relacionados con los gráficos y el plugin (vamos, los grandes cambios de la 6u10 en ambos aspectos han generado alguna cagadilla)
  • 16 fixes en VisualVM

Así que, parece que aunque la excusa de los updates impares son actualizaciones de seguridad, este en concreto lo han tenido que adelantar para arregar alguna cagadilla de la última release de hace 45 días.

Espero que la política de Sun no cambie hacia la "beta permanente" que está poniendo de moda Google y que amparamos bajo el nombre genérico de metodologías ágiles... y que tiene sentido en servicios/aplicaciones modelos SaaS... ¡pero no en esto, coño!

Salida nula: Java 6 Update 11 (6u11)

Ummm...

Pues ha debido haber alguna "salida nula" en Sun o algún bug detectado a última hora, o alguien que ha tenido el dedo del gatillo demasiado rápido.

Porque en algún momento entre el día 1 y el 2 de diciembre (hoy) Sun ha liberado el Update 11 (6u11) del JDK/JRE pero a continuación lo han vuelto a eliminar de la página de descargas.

He visto la reseña en este post: http://blogs.sun.com/nbprofiler/entry/jdk_6_update_11_comes y efectivamente como indica alguno de los comentaristas si googleas "Java SE Development Kit (JDK) 6 Update 11" ya está indexado...

Como comentaba en la entrada Schedule de siguientes updates de Java 6. Versiones de Hotspot y compatibilidad entre ellas, se esperaba que este 6u11 sóo contuviera actualizaciones de seguridad pero por lo que parece incluye también al menos una actualización de VisualVM. Pero tiene que haber alguna actualización de seguridad porque si no, no se explica esta aceleración en el tiempo entre updates. ¿Menos de 2 meses? Ummm...