Emezeta.com

Compresion HTTP al vuelo


Hoy me he decidido a hacer algo que desde hace algún tiempo quería dedicarle unos minutos. Una vez leí en una web que recopilan datos y hacen estadísticas sobre servidores web que casi un 80% de los servidores no usan técnicas de compresión al vuelo en sus servidores.

Sin embargo, la idea es bien sencilla:

compresion datos http

En la primera imágen podemos ver como suelen actuar la mayoría de los servidores. El cliente realiza una petición al servidor web, el cuál le responde enviandole la página web. Pongamos como ejemplo que la página ocupa 50 Kb.

Muchos webmasters se preocupan por el gasto de ancho de banda que puede consumir su servidor web (u otros servicios), ya que no es infinito y el gasto que se consuma en cualquier momento, limitará el ancho de banda disponible para otros navegantes.

En cambio, en la segunda imágen que vemos, lo que ocurre es que, al hacer la petición el cliente, el servidor web se encarga de comprimir esos datos antes de enviarlos, encargandose el navegador del cliente de descomprimirlos antes de mostrarlos. En algunos casos, este sistema puede ahorrar... ¡¡hasta un 70% de ancho de banda!!

Técnicamente, recordar que el Apache 1.3 usa el módulo mod_gzip para la compresión de datos, pero el Apache 2.0 realiza la compresión a través de otro módulo, el mod_deflate.

A todos los que tengáis servidor propio, os recomiendo echarle un vistazo a este sistema, en algunos casos puede sugerir un ahorro de ancho de banda realmente considerable:

  • /
    Antes: 27.215 (27Kb) Despues: 8.833 (8Kb)
    (Reducción al: 32%)
  • /estadisticas/
    Antes: 136.454 (136Kb) Despues: 4.534 (4Kb)
    (Reducción al: 3%)
  • /dic/
    Antes: 1.202 (1Kb) Despues: 417 (0'4Kb)
    (Reducción al: 34%)

Para obtener estos datos solo tenemos que modificar la forma en que Apache crea nuestros logs con la ayuda del módulo mod_log_config. Eso sí, habrá que tener en cuenta los posibles efectos secundarios, que aunque datan de hace bastante tiempo, nunca está de más saberlo.