Activar la compresión gzip en Apache (httpd)

Gzip en el servidos de aplicaciones httpd de Aapche

Introducción

En este artículo os voy a explicar como servir comprimido el contenido a través del servidor de aplicaciones httpd de Apache. La gente no suele tener esto en cuenta y la verdad es que haciendo esto podemos hacer que nuestras páginas web carguen mucho más rápido ya que el tamaño que se va a tener que descargar el navegador será mucho menor.

Configuración

Lo primero que tendremos que hacer es elegir que tipo de contenido queremos servir comprimido (normalmente es todo el que sea texto). Una lista de los tipos de contenido que se suele comprimir es el siguiente:

  • text/plain
  • text/html
  • text/xml
  • text/gml
  • text/css
  • application/json
  • application/xml
  • application/xhtml+xml
  • application/rss+xml
  • application/javascript
  • application/x-javascript

Como no siempre apache sabe el tipo de contenido que tiene un fichero, también podremos indicarle que ficheros servir comprimidos a través de sus extensiones. Estas suelen ser: html, xml, gml, js, css.

Para servir comprimido estos tipos de contenido, lo que tendremos que hacer es cargar el módulo deflate y activarlo. Luego tendremos que indicar que tipo de contenido y que archivos (a través de su extensión) queremos comprimir. Para ello tendremos que añadir las siguientes líneas a nuestro fichero de configuración de Apache httpd.conf:

LoadModule deflate_module modules/mod_deflate.so

<IfModule mod_deflate.c>

    # Activamos la compresión
    SetOutputFilter DEFLATE

    # Indicamos los tipos de contenido a comprimir
    AddOutputFilterByType DEFLATE text/plain
    AddOutputFilterByType DEFLATE text/html
    AddOutputFilterByType DEFLATE text/xml
    AddOutputFilterByType DEFLATE text/gml
    AddOutputFilterByType DEFLATE text/css
    AddOutputFilterByType DEFLATE application/json
    AddOutputFilterByType DEFLATE application/xml
    AddOutputFilterByType DEFLATE application/xhtml+xml
    AddOutputFilterByType DEFLATE application/rss+xml
    AddOutputFilterByType DEFLATE application/javascript
    AddOutputFilterByType DEFLATE application/x-javascript

    # Indicamos las extensiones de los ficheros a comprimir
    <files *.html>
        SetOutputFilter DEFLATE
    </files>
    <files *.xml>
        SetOutputFilter DEFLATE
    </files>
    <files *.gml>
        SetOutputFilter DEFLATE
    </files>
    <files *.json>
        SetOutputFilter DEFLATE
    </files>
    <files *.js>
        SetOutputFilter DEFLATE
    </files>
    <files *.css>
        SetOutputFilter DEFLATE
    </files>

</IfModule>

Además tendremos que tener en cuenta, que si estamos usando la versión 2.4 del servidor de Apache httpd, tenemos que cargar también el módulo filter con la siguiente línea:

LoadModule filter_module modules/mod_filter.so

Por último tendremos que reiniciar el servicio para que cargue la nueva configuración. Si estamos en Windows desde el panel de control de los servicios o si estamos en Linux con el siguiente comando:

>> sudo service apache2 restart

Si estáis en linux y queréis comprobar si una url se esta sirviendo comprimida, podéis hacerlo ejecutando el siguiente comando (acordaros de sustituir la url).

>> wget --no-cache --header="accept-encoding: gzip" -S TU_URL 2>&1 | grep "Content-Encoding"

Si se ha devuelto comprimida, al ejecutar el comando os indicará: "Content-Encoding: gzip"

temas: 

Comentarios

Tengo la duda: ¿existe alguna manera de saber si el servidor está implementando los métodos de compresión?

Tengo configurado mi .htaccess para comprimir todo, pero el PageSpeed me sigue diciendo que no tengo nada comprimido; y no tengo ningún error, pues me he bajado la versión de .htaccess de BoilerPlate; y, según entiendo, no contiene ningún error. ¿Puede ser un error del PageSpeed (sería el colmo)?

Buenas tardes, amigo me gustaría saber si eso se incluye en el archivo .htaccess

No, hay que ponerlo en el fichero httpd.conf o dependiendo de la estructura de los ficheros de configuración de tu Apache en alguno otro.

Añadir nuevo comentario