Optimiser le Gzip de son Apache pour Google

Pour ceux qui utilisent les outils webmaster de Google, vous avez remarqué depuis quelques temps l'apparition d'une entrée 'Performances du site' dans le menu 'Labos' de l'interface.

Si on lit la doc on apprend les choses suivantes :

Google s'emploie à proposer aux internautes les résultats de recherche les plus pertinents et un confort de navigation optimal. Des sites rapides participent à l'amélioration de la qualité globale du Web (en particulier pour les internautes ayant des connexions Internet bas débit). Ainsi, en améliorant leurs sites, nous espérons que les webmasters participeront à l'accélération globale de la navigation sur le Web.

Il semble donc que Google va prendre (ou prends déjà) en compte la rapidité de chargement de votre site pour le classement de vos pages dans son moteur de recherche, tout cela dans une optique qualité de service envers les internautes.

Un des moyens efficace et rapide pour ceux qui ont des serveurs dédiés consiste à optimiser la configuration Gzip de son serveur Web pour gagner un gain d'environ 50 à 60 % sur la vitesse de chargement des pages, voilà donc un bon sujet pour un article, au passage je tient à remercier Aysoon pour m'avoir mis la puce à l'oreille ...

Voici les manipulations à effectuer sur une Debian Lenny mais la configuration est facilement reproductible sur n'importe quelle plateforme ayant Apache comme serveur Web.

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.

Pour exemple sur un site communautaire la page d'accueil avait un rendu moyen de 7 secondes, avec l'optimisation Gzip j'ai désormais un rendu moyen de 3 secondes ... Et comme par hasard j'ai gagné quelques places dans mon classement Google sans autre optimisation SEO.

Voilà donc une nouvelle arme dans mon arsenal SEO pour tous nouveaux projets.

Commentaires

Portrait de Anonyme

serveurs dédiés ok mais pour les mutualisés...
on pleure :(

Portrait de Thierry Roffini

Pour sur un mutualisé c'est la misère pour faire ce que tu veux.
Connais tu cette offre de serveur dédié à 29.99 €/mois :
- http://www.kimsufi.com/ks/

Poster un nouveau commentaire

Si vous voulez une image avec votre commentaire, obtenez un Gravatar.
Le contenu de ce champ sera maintenu privé et ne sera pas affiché publiquement. Si vous avez un compte gravatar, l'utilisez pour afficher votre avatar.
  • Les adresses de pages web et de messagerie électronique sont transformées en liens automatiquement.
  • Tags HTML autorisés : <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Les lignes et les paragraphes vont à la ligne automatiquement.

Plus d'informations sur les options de formatage