Aunque es mas viejo que Matusalén, la compresión HTTP no es la más usada o implementada por los arquitectos o programadores.
Curioso ya que el motor de búsqueda Google si lo utiliza en todos sus módulos, de hecho es uno de los motores de búsqueda más rápidos que existe.
Es increíble que a día de hoy, año 2009, todavía un gran porcentaje de sitios y servicios web no tengan implementada ni la optimización más básica de todas: compresión de los contenidos servidos para aligerar las comunicaciones.
¿Que es la compresión HTTP?
El protocolo de transferencia de documentos de hipertexto (HTTP), utilizado en la web, provee la poderosa pero poco conocida habilidad de trabajar con información comprimida utilizando algoritmos de compresión estándares en la industria.
Se trata entonces de comprimir la información enviada por el servidor del sitio web, dejando al navegador del visitante el trabajo de descomprimirlo. Esto se realiza automáticamente, sin que el visitante lo perciba ni deba intervenir.
Las ventajas, no vale la pena mencionarlas ya que las páginas se comprimen a un: 65% a 85% y quiero comprimir este post…
Desventajas
Como la compresión se realiza dinámicamente, esta requiere algo de procesamiento. Sin embargo, en nuestra experiencia esto no tiene un impacto significativo en la performance del servidor.
Ejemplo:
Header en la petición:
Accept-Encoding: gzip, deflate
Headers en la respuesta:
Vary: Accept-Encoding
Content-Encoding: gzip
En Tomcat basta con añadir al tag <Connector> del fichero server.xml:
compression=”on”
compressableMimeType=
“text/html,text/xml,text/css,text/javascript,text/plain,application/x-javascript,text/unknown,text/*”
En Glassfish basta con añadir lo equivalente en el domain.xml, dentro de las secciones <http-listener> que deseemos:
<property value=”on”/>
<property value=”text/html,text/xml,text/css,text/javascript,text/plain,application/x-javascript,application/force-download,application/pdf,text/unknown,text/*”/>
En Apache es también trivial; por ejemplo en Apache 2.2 con mod_deflate la configuración sería:
AddOutputFilterByType DEFLATE
text/html text/xml text/css text/javascript text/plain application/x-javascript application/force-download application/pdf text/unknown text/*
En iPlanet idem, además se permite tanto la carga de archivos “precomprimidos” y la compresión al vuelo. Para la compresión dinámica:
Output fn=”insert-filter” filter=”http-compression” vary=”on”
Output fn=”insert-filter” filter=”http-compression” vary=”on”
Output fn=”insert-filter” filter=”http-compression” vary=”on”
Output fn=”insert-filter” filter=”http-compression” vary=”on”
Y para soporte a archivos precomprimidos en iPlanet (deben existir las dos versiones, por ejemplo “prueba.js” y “prueba.js.gz”). Aquí habrá que hacerlo por cada extensión o similar (no es un filtro de salida sino un procesamiento previo, por ejemplo para aplicarlos a ficheros .js:
<Object ppath=”*/*.js”>
PathCheck fn=”find-compressed” check-age=”on” vary=”on”
</Object>




Muro- Deja Tu inquietud tecnológica RSS Feed