Optimiser le Gzip de son Apache pour Google | blog.utopiaz.org // Développement, Open Source et contexte Web2.0

1. Installation des modules Apache

Par défaut sous Debian le module deflate est enclenché, le module headers nous serviras dans le cadre d’environnement utilisant un proxy. On enclenche donc ces deux modules au niveau d’Apache, pour cela on lance une console SHH sur notre serveur et on lance les commandes suivantes :

a2enmod deflate

a2enmod headers

On relance notre Apache pour prendre en compte les nouveaux modules :

/etc/init.d/apache2 restart

2. Optimiser la configuration du module Deflate (gzip)

Nous allons optimiser la configuration de module Deflate qui de base sous Debian est assez minimaliste, pour cela on édite le fichier suivant :

nano /etc/apache2/mods-available/deflate.conf

On modifie la configuration de la manière suivante :

<IfModule mod_deflate.c>

DeflateCompressionLevel 3

</IfModule>

<Location />

AddOutputFilterByType DEFLATE text/plain

AddOutputFilterByType DEFLATE text/xml

AddOutputFilterByType DEFLATE text/html

AddOutputFilterByType DEFLATE text/css

AddOutputFilterByType DEFLATE image/svg+xml

AddOutputFilterByType DEFLATE application/xhtml+xml

AddOutputFilterByType DEFLATE application/xml

AddOutputFilterByType DEFLATE application/rss+xml

AddOutputFilterByType DEFLATE application/atom_xml

AddOutputFilterByType DEFLATE application/x-javascript

AddOutputFilterByType DEFLATE application/x-httpd-php

AddOutputFilterByType DEFLATE application/x-httpd-fastphp

AddOutputFilterByType DEFLATE application/x-httpd-eruby

SetOutputFilter DEFLATE

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

SetEnvIfNoCase Request_URI \.pdf$ no-gzip dont-vary

SetEnvIfNoCase Request_URI \.avi$ no-gzip dont-vary

SetEnvIfNoCase Request_URI \.mov$ no-gzip dont-vary

SetEnvIfNoCase Request_URI \.mp3$ no-gzip dont-vary

SetEnvIfNoCase Request_URI \.mp4$ no-gzip dont-vary

SetEnvIfNoCase Request_URI \.rm$ no-gzip dont-vary

BrowserMatch ^Mozilla/4 gzip-only-text/html

BrowserMatch ^Mozilla/4\.0[678] no-gzip

BrowserMatch \bMSIE !no-gzip !gzip-only-text/html

BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html

# Make sure proxies don’t deliver the wrong content

Header append Vary User-Agent env=!dont-vary

</Location>

Explications :

DeflateCompressionLevel 3 détermine le niveau de compression, les valeurs vont de 1 à 9, de base le choix est à 1.

AddOutputFilterByType DEFLATE xxx/xxx indiq ue le mime type des éléments à compresser.

SetOutputFilter DEFLATE active la compression.

SetEnvIfNoCase Request_URI \.(?:xxx|xxx|xxx)$ no-gzip dont-vary ne compresse pas les fichiers car ils possèdent déjà une compression.

BrowserMatch ^Xxx/x gzip-only-text/html n’active la compression des pages que sous certaines conditions selon le type de navigateur.

Header append Vary User-Agent env=!dont-vary configuration spécifique pour les proxy.

La configuration du module est terminée, il est nécessaire de relancer Apache :

/etc/init.d/apache2 restart

Pour vérifier que la compression soit fonctionnelle, vous pouvez utiliser des outils comme YSlow pour prendre les valeurs avant et après l’optimisation de votre module, pour ma part j’ai constaté un gain significatif de plus de 60 % sur la vitesse de rendu de mes projets.

viaOptimiser le Gzip de son Apache pour Google | blog.utopiaz.org // Développement, Open Source et contexte Web2.0.