Uno de los métodos más eficaces para reducir el uso de ancho de banda por el servidor web y, al mismo tiempo, aumentar la velocidad de la entrega de contenido es comprimir las páginas web y, en general, todos los resultados que se devuelve a los clientes. La compresión del contenido web, se puede hacer usando varios métodos.
¿Qué es el modulo mod_deflate?
El módulo de Apache mod_deflate permite al servidor entregar los archivos comprimidos al vuelo. Suele usarse para mejorar el rendimiento de una web, en el sentido de menos tiempo de descarga para el visitante.
Cuando se realiza una peticion a una web, Apache prepara la respuesta que se enviará al visitante en varias etapas. Una de las etapas consiste en la modificación o transformación de los datos utilizando filtros de salida. El modulo mod_deflate, una vez cargado y activado, se inserta como un filtro, llamado DEFLATE, en la cadena de Apache de filtros de salida, que comprime todos los datos que va a través de él.
Por ejemplo, se puede establecer el nivel de compresión, restringir la compresión a los tipos MIME en particular o prevenir algunos navegadores web, visitantes u otros problemas de HTTP de recibir datos comprimidos desde el servidor
El modulo mod_deflate también ofrece un filtro de entrada que se puede utilizar para descomprimir los datos comprimidos en las peticiones HTTP.
El proceso de configuración que desarrollaremos se pueden insertar en el contexto del servidor principal de Apache o se pueden guardar en un archivo que será cargada desde el servidor principal o en la configuracion de un virtual host.
Activar el modulo mod_deflate
mod_deflate se puede activar como cualquier otro módulo de Apache desde el archivo /etc/httpd/conf/httpd.conf
LoadModule deflate_module modules/mod_deflate.so
Hay que tener en cuenta que esta directiva sólo puede existir en la configuración del servidor principal.
Habilitar la compresión
La compresión de los datos puede ser habilitado todos los datos que pasan por el filtro de DEFLATE o dependiendo de los tipos MIME seleccionados.
Para habilitar la compresión para cualquier tipo de contenido, debemos introducir la siguiente directiva:
SetOutputFilter DEFLATE
Alternativamente se puede especificar el tipo de archivo que se quiere comprimir desde el filtro de salida DEFLATE desde la directiva AddOutputFilterByType. Ver los siguientes ejemplos:
AddOutputFilterByType DEFLATE text/plain AddOutputFilterByType DEFLATE text/html AddOutputFilterByType DEFLATE text/xml AddOutputFilterByType DEFLATE text/css AddOutputFilterByType DEFLATE application/xml AddOutputFilterByType DEFLATE application/xhtml+xml AddOutputFilterByType DEFLATE application/rss+xml AddOutputFilterByType DEFLATE application/javascript AddOutputFilterByType DEFLATE application/x-javascript
Ajuste el nivel de compresión
En general, el algoritmo de compresión deflate es lo suficientemente rápido, por tanto, establecer el nivel de compresión al máximo (9) no causará ningún problema notable, incluso en hardware relativamente antiguo.
DeflateCompressionLevel 9
Reglas personalizadas para los navegadores problemática
La compresión se puede activar o desactivar para los tipos text/html para navegadores que puedan dar problemas, o simplemente restringir la comprensión.
BrowserMatch ^Mozilla/4 gzip-only-text/html BrowserMatch ^Mozilla/4.0[678] no-gzip BrowserMatch bMSIE !no-gzip !gzip-only-text/html
Beneficios de la compresión
El algoritmo deflate puede comprimir texto muy rápido y con un ratio de eficiencia muy alto. Por otro lado, es casi inútil cuando se utiliza para comprimir las imágenes que se han preparado para la web, tales como PNG, JPEG, GIF y en general todos los otros tipos de imágenes en las que ya ha sido los datos comprimidos. Lo mismo ocurre con archivos de audio comprimido, como MP3, vídeos, documentos PDF y todos los demás archivos ya están comprimidos.