Añadir nuevo comentario

Activar la compresión Gzip en tomcat

Activar la compresión Gzip en Tomcat

Lo primero de todo vamos a ver que es la compresión gzip en servidores. Los servidores web tienen la opción de enviar el contenido que estan sirviendo comprimido, para reducir el tamaño de los datos. Por lo que se necesitará menos ancho de banda y las trasferencias tardaran menos tiempo (obteniendo el usuario la páguina web más rápido). Aunque esto se obtiene a costa de aumentar un poco el uso de la CPU (utilizado para hacer la compresión).

No todo el contenido es recomendable servirlo comprimido ya que se elevaría demasiado el uso de la CPU. Es recomendable comprimir solo contenído de texto, como por ejemplo los css, javascript, html, xml, ...

Una vez acabada la explicación, vamos con la práctica. Para activar la compresión Gzip en tomcat, tendremos que editar el fichero que se encuentra en la ruta /conf/server.xml (dentro de la carpeta de nuestro tomcat) y añadir a todos los conectores http que tengamos los siguientes atributos (para comprimir html, xml, css y javascript y no comprimir para los motores gozilla y traviata):

compression="on"
compressionMinSize="2048"
noCompressionUserAgents="gozilla, traviata"
compressableMimeType="text/html,text/xml,text/css,text/javascript"

El significado de cada uno de los parámetros es el siguiente:

  • compression: Sirve para activar al compresión.
  • compressionMinSize: Tamaño minimo para comprimir.
  • noCompressionUserAgents: Le dice para que clientes no tiene que usar la compresión (puedes decirle que no haga compresión para un navegador determinado).
  • compressableMimeType: con este parámetro le indicamos el contenido que queremos que se sirva comprimido (aquí teneis una lista de los posibles mime type).

Por ejemplo, si tenemos un conector del tomcat en el puerto 80, quedaría así:

<Connector port="8080" maxHttpHeaderSize="8192" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" compression="on" compressionMinSize="2048" noCompressionUserAgents="gozilla, traviata" compressableMimeType="text/html,text/xml,text/css,text/javascript"/>

Los conectores del protocolo ajp no me ha quedado claro si no se puede usar compressión con ellos o como es un protocolo binario no hace falta la compresión porque ya la hace.

temas: