¿Cómo añadir la compresión GZIP a tu web?

¿Has chekeado tu web en Google Page Speed y te sale mala puntuación en “Habilita la compresión de texto”? ¡Entonces estás en el lugar adecuado! Con la compresión GZIP podrás reducir el tamaño de tu web.

¿Qué es GZIP?

Es un formato de compresión desarrollado hace ya más de 2 décadas, y que utiliza el algoritmo de «Deflate» para comprimir ficheros.

Con la compresión GZIP podrás reducir el tamaño de tu web, habilitando la compresión lograrás disminuir el tiempo para descargar todos los archivos comprimidos y mejorar el TTFB (tiempo hasta el primer byte).  Es importante señalar que los usuarios que te visitan desde un móvil gastarán “menos megas”.
La compresión GZIP funciona perfectamente en todos los navegadores web que se utilizan hoy en día, por lo que no tienes que temer que haya ningún tipo de problema de compatibilidad.

¿Cómo añadir la compresión GZIP en Plesk? Sin usar SSH

Añadiendo las siguientes líneas al .htaccess de Apache, que está en el directorio raíz de tu web (Puedes hacerlo por SFTP o usando el administrador de ficheros de Plesk).

#Habilitar compresion GZIP en Plesk
    AddOutputFilterByType DEFLATE application/javascript
    AddOutputFilterByType DEFLATE application/rss+xml
    AddOutputFilterByType DEFLATE application/vnd.ms-fontobject
    AddOutputFilterByType DEFLATE application/x-font
    AddOutputFilterByType DEFLATE application/x-font-opentype
    AddOutputFilterByType DEFLATE application/x-font-otf
    AddOutputFilterByType DEFLATE application/x-font-truetype
    AddOutputFilterByType DEFLATE application/x-font-ttf
    AddOutputFilterByType DEFLATE application/x-javascript
    AddOutputFilterByType DEFLATE application/xhtml+xml
    AddOutputFilterByType DEFLATE application/xml
    AddOutputFilterByType DEFLATE font/opentype
    AddOutputFilterByType DEFLATE font/otf
    AddOutputFilterByType DEFLATE font/ttf
    AddOutputFilterByType DEFLATE image/svg+xml
    AddOutputFilterByType DEFLATE image/x-icon
    AddOutputFilterByType DEFLATE text/css
    AddOutputFilterByType DEFLATE text/html
    AddOutputFilterByType DEFLATE text/javascript
    AddOutputFilterByType DEFLATE text/plain
    AddOutputFilterByType DEFLATE text/xml
    BrowserMatch ^Mozilla/4 gzip-only-text/html 
    BrowserMatch ^Mozilla/4\.0[678] no-gzip 
    BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
    Header append Vary User-Agent

También es posible hacerlo con mod_gzip, pero está menos soportado que DEFLATE, y el resultado es prácticamente el mismo. Quedaría así:

mod_gzip_static_suffix .gz
AddEncoding gzip .gz
AddEncoding gzip
.gzip mod_gzip_on YES
mod_gzip_handle_methods GET
mod_gzip_temp_dir /tmp
mod_gzip_can_negotiate Yes
mod_gzip_dechunk Yes
mod_gzip_send_vary On
mod_gzip_update_static No
mod_gzip_keep_workfiles No
mod_gzip_minimum_file_size 250
mod_gzip_maximum_file_size 1048576
mod_gzip_maximum_inmem_size 60000
mod_gzip_min_http 1000
mod_gzip_item_exclude reqheader "User-agent: Mozilla/4.0[678]"
mod_gzip_item_exclude file .js$
mod_gzip_item_exclude file .css$
mod_gzip_item_exclude mime ^application/pdf$
mod_gzip_item_exclude mime ^image/
mod_gzip_item_exclude mime ^application/x-javascript$
mod_gzip_item_include mime ^text/.*
mod_gzip_item_include file .html$
mod_gzip_item_include file .pl$
mod_gzip_item_include file .cgi$
mod_gzip_item_include handler ^cgi-script$
mod_gzip_item_include mime ^httpd/unix-directory$
mod_gzip_item_include mime ^application/postscript$

¿No te funciona la compresión GZIP en Plesk? Añade la compresión GZIP en Nginx.

Si lo anterior no te ha servido es porque tu web sólo funciona con Apache. Y es muy común ver instalaciones Plesk que lo que tienen expuesto hacia internet es un NGINX (aunque lo usen como proxy inverso y tengan un Apache detrás), debido a esto lo que deberíamos tocar es la configuración de NGINX. ¡No te asustes, es muy sencillo de hacer!

Para ello, entras en el panel de Plesk y vas a Plesk > Dominios > tudominio.com > Ajustes de Apache & nginx  y añades las siguientes líneas en el apartado «Additional nginx directives» (Directivas nginx adicionales):

gzip on;
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_types image/svg+xml text/plain text/html text/xml text/css text/javascript application/xml application/xhtml+xml application/rss+xml application/javascript application/x-javascript application/x-font-ttf application/vnd.ms-fontobject font/opentype font/ttf font/eot font/otf application/font-ttf;

¡Y listo! Guárdalo y ya puedes comprobar que tu web soporta y tiene activada la compresión GZIP en HTML, CSS, Javascript, XML y los distintos tipos de fuentes web. Si Google PageSpeed Insights nos detecta que algunos recursos estáticos no son comprimidos, debemos revisar los MIME* que debe comprimir Nginx y añadir los que falten.

Simplemente accede al «Panel de control de cPanel» >> «Optimizar el sitio web» >> «Comprimir todo el contenido», y pulsa en «Actualizar configuración».

cPanel se encargará de actualizar tu web para que todo el tráfico vaya comprimido con GZIP.

Existen infinidad de herramientas online y gratuitas que te ayudan a verificar si tu web tiene habilitada la compresión GZIP, compruébalo.

¿Qué son los tipos de MIME*? 

Los tipos de MIME describen el tipo de medio del contenido, sea del correo electrónico o el utilizado en los servidores o aplicaciones web, y tiene como proposito ayudar a guiar al navegador web acerca de como ha de ser procesado y mostrado el contenido. Ejemplos de tipos de MIME son:

  • texto/html para páginas web normales
  • texto/plano para texto común
  • Aplicacion/de fuente octeto que significa “descarga este archivo”
  • Aplicacion/x-java-applet para uso de applets de Java
  • Aplicacion/pdf para documentos en PDF.

Te podría interesar...