La vitesse du web est l’un des principes que défend Google depuis sa création.

Mieux que ça, il s’agit d’un élément fondamental de son ADN, en attestent ses interfaces toujours simples et épurées. Sa page d’accueil en est d’ailleurs l’exemple le plus marquant.

Au fur et à mesure de son développement, Google a créé de nombreux services et outils permettant de mesurer, d’améliorer, d’encourager la vitesse des sites internet.

On peut citer, en vrac :

Si l’on n’est pas convaincu par l’intérêt SEO d’optimiser les performances de son site, il y a également l’intérêt business :
  • Pour Amazon, 100 ms de temps de latence en plus, c’est 1% de CA de perdu.
  • Pour Google, 500 ms de temps de latence en plus, c’est 20% de recherches en moins.
  • Pour Yahoo, 400 ms de temps de latence en plus, c’est une perte de trafic de 5 à 9 %.
  • Pour France Télévision, l’amélioration de 20 % des performances entraîne 10 % de hausse d’audience.
Il existe principalement quatre leviers pour améliorer les performances d’un site :
  • L’infrastructure réseau de votre hébergeur. Le nombre de routeurs que va devoir traverser un internaute pour atteindre votre serveur va avoir un impact important sur le temps de latence. A titre d’exemple, depuis ma freebox, je dois traverser 14 routeurs pour atteindre le site free.fr, et 29 routeurs pour le site australien immi.gov.au. C’est pour cela que des solutions tel qu’Akamai existent. Si vous possédez un site modeste, vous n’avez aucun moyen d’influencer là dessus. Mais choisissez un hébergeur situé dans la même zone géographique que votre cible et jetez un coup d’oeil à son infrastructure réseau.
  • L’infrastructure serveur de votre site. Très grossièrement, plus vous recevez de visites, plus il vous faut rajouter des serveurs. Il existe de nombreuses solutions : load balancing, cloud computing, CDN, … c’est un métier à part entière.
  • La configuration du serveur : compression gzip, memcached, mise en cache, …
  • La configuration on-site : optimisation des requêtes, minification des fichiers, suppression des espaces, regroupement des fichiers javascript…

Ce dernier levier d’optimisation est généralement celui sur lequel on a le plus la main lorsqu’on s’occupe d’un site de taille modeste. Il est loin d’être négligeable car il permet de limiter le nombre de requêtes faites au serveur et de réduire la taille des fichiers téléchargés.

C’est par contre particulièrement rébarbatif.

C’est là qu’intervient un module Apache créé par Google : le mod_pagespeed, celui-ci va faire tout un tas d’optimisations à votre place.

Notez que ce module Apache est expérimental, ne l’installez sur un serveur en production que si vous savez très bien ce que vous faîtes.

Notez également qu’il faut avoir les accès root de sa machine pour pouvoir installer ce module.

Je l’ai testé en local par curiosité et été très impressionné par sa facilité d’installation et de configuration ainsi que par son efficacité.

Voici un petit tuto pour vous expliquer comment ça marche, testé sur Ubuntu 11.10.

On télécharge et on installe le module

wget https://dl-ssl.google.com/dl/linux/direct/mod-pagespeed-beta_current_i386.deb
sudo dpkg -i mod-pagespeed-beta_current_i386.deb
rm mod-pagespeed-beta_current_i386.deb

Ca y est, le module est installé !

Il ne sera actif qu’une fois le serveur Apache redémarré

sudo /etc/init.d/apache2 reload

Mais on va d’abord le configurer.

Tout se joue dans l’édition du fichier /etc/apache2/mods-available/pagespeed.conf

A chaque modification, vous devrez redémarrer le service Apache.

Vous pouvez très facilement activer ou désactiver le module en mettant l’instruction « ModPagespeed » à on ou à off.

Le module page_speed fonctionne avec des filtres que vous activez ou désactivez.

ModPagespeedEnableFilters combine_css

Cette ligne permet de combiner l’ensemble de vos fichiers CSS.

ModPagespeedEnableFilters combine_javascript

De même pour les fichiers javascript.

ModPagespeedEnableFilters collapse_whitespace

Ce filtre permet de supprimer tous les espaces inutiles de votre code HTML et ainsi réduire significativement le poids de la page.

ModPagespeedEnableFilters rewrite_javascript

Ce filtre permet de minifier vos fichiers javascript.

ModPagespeedEnableFilters extend_cache

Va augmenter la durée de mise en cache des images

ModPagespeedEnableFilters rewrite_images

Va optimiser les images et entre autres les convertir au format WebP pour les navigateurs compatibles.

Il existe de nombreux autres filtres pour page_speed, le tout est documenté ici.

J’espère que ce module va continuer à être développé et sera bientôt suffisamment stable pour être adopté par des services d’hébergement mutualisé. Une fois installé sur le serveur, il est en effet possible de configurer le module directement via un fichier .htaccess.