Apache no me comprime con gzip la web para optimizar el contenido para Google

Bienvenidos a VerTutoriales.com, si estáis optimizando vuestra web por ejemplo para Google con PageSpeed Insight, es posible que os esté pidiendo que comprimáis el contenido para reducir el tiempo de carga de la web, algo recomendable en la mayoría de los casos aunque penalice nuestro servidor.

Este era mi caso, lo único que ocurría es que ya había probado a comprimir el contenido de varias formas, utilizando la compresión desde htaccess:

Comprimir utilizando GZip

<IfModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_item_include file .html$
mod_gzip_item_include file .php$
mod_gzip_item_include file .css$
mod_gzip_item_include file .js$
mod_gzip_item_include mime ^application/javascript$
mod_gzip_item_include mime ^application/x-javascript$
mod_gzip_item_include mime ^text/.*
mod_gzip_item_include handler ^application/x-httpd-php
mod_gzip_item_exclude mime ^image/.*
</IfModule>

 Utilizando Deflated:

AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml

La cosa es que ninguno de estos me funciono, así que seguí a la caza buscando el código y localización correcta para configurarlo… me tiré directamente a Apache para configurarlo por defecto para todas las páginas, no me gustó la idea mucho, primero por que teniendo multitud de webs en producción realizar un cambio de esta envergadura puede llevar al caos y  la incidencia para varias decenas de webs… segundo por que al realizar la compresión el servidor consume un mayor número de recursos en comprimir la información para las peticiones que recibe. Aún así… estaba decidido a comprimir la web y probar si ayudaba a posicionar la web 😉

Lo primero era buscar donde se encuentra el fichero de configuración del servidor web Apache, en mi caso utilizaba en este servidor Centos con Plesk, por lo que la configuración por defecto está en:

 /etc/apache2/apache2.conf

Para editarlo simplemente hay que abrirlo utilizando alguno de los editor de texto, por ejemplo «vim». Una vez abierto, hay que añadir una nueva declaración, por ejemplo, si vamos a utilizar deflated para comprimir:

<IfModule mod_deflate.c>
SetOutputFilter DEFLATE
# Don’t compress
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary
SetEnvIfNoCase Request_URI \.(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary
#Dealing with proxy servers
<IfModule mod_headers.c>
Header append Vary User-Agent
</IfModule>
</IfModule>

Luego hay que reiniciar el servicio, dependiendo de tu versión puede ser

service httpd restart

Después de reiniciar el servidor Apache y comprobar de nuevo la compresión…. sorpresa! Aún no estaba funcionando… algo raro pasaba, había probado los dos métodos para comprimir que conocía, tiré de Google para seguir buscando más opciones, pero pasaban por modificar el htaccess o configurar Apache…

La sorpresa de nginx

Ya es hora de conocer este servidor optimizado para webs 🙂 Con las últimas versiones de «autoinstalación» de mis servidores, no me había entretenido a probar el servidor que estaba corriendo, de hecho en alguno lo he tenido que tener deshabilitado para que no entrara en conflicto con versiones antiguas de algunos clientes y sus gestores de tiendas.

Sí, nginx era lo que no estaba comprimiendo y era a su vez el que estaba sirviendo las webs, por eso todas las configuraciones que estaba utilizando para Apache no funcionaban… NORMAL.

Así que paso a daros los pasos que dí para configurar finalmente el servidor nginx para comprimir las webs

Como anteriormente, hay que buscar el fichero de configuración de nginx y editarlo

vi /etc/nginx/nginx.conf

Una vez tenemos abierto el fichero de configuración del servidor, hay que buscar la linea de http con sus parámetros de configuración que viene entre llaves {}. Encontrada esta línea simplemente hay que añadir tal y como indico a continuación para configurar Gzip:

http {
gzip on;
gzip_http_version 1.1;
gzip_vary on;
gzip_comp_level 6;
gzip_proxied any;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript text/x-js;
gzip_buffers 16 8k;
gzip_disable "MSIE [1-6].(?!.*SV1)";
}

Y listo! Con este puñado de líneas tendremos configurado nuestro servidor para la compresión.

He de decir que los múltiples golpes recibidos para esta configuración casi me llevaron a la desesperación, pero el resultado de un punto verde en Google es como recibir el aprobado que tanto esperábamos en esa asignatura que se nos hacía cuesta arriba en el instituto!

Además el tiempo de carga de la web casi se redujo a la mitad, hablamos de milisegundos, pero todo cuenta 😉

Si os ha resuelto la duda… compartid, dar like o comentad

Carlos Dk

Apasionado por la enseñanza y el SEO

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.