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 :
- Des conseils pour améliorer les performances d’un site dans Google Webmaster Tools
- Le lancement du navigateur Google Chrome
- Le passage du code javascript Google Analytics en mode asynchrone
- La mise à disposition de plusieurs librairies javascript en CDN
- Le développement d’un service de DNS
- La mise à disposition d’un service de CDN
- Développement du protocole SPDY
- La prise en compte de la vitesse de chargement des pages dans l’algorithme de ranking
- La création d’un nouveau format d’image
- J’oublie sûrement plein de choses…
- 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.
- …
- 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.
nous l’avions essayé il y a 6 mois, et les améliorations n’étaient pas au rendez-vous, site assez correctement optimisé par ailleurs (88 à 92% de la note speedtools de GG selon les pages)
De même, je l’ai installé sur l’une de mes machines virtuelles. En théorie, le site est plus compact à charger, ce qui doit profiter notamment aux visiteurs à faible bande passante, ou à bande passante facturée au poids (Internet mobile). Cependant, publiant déjà des images compressées au maximum pour une qualité optimale, et usant de solutions de cache par ailleurs très efficaces, je n’ai pas constaté de gain autre que très mineur. Le véritable gain pourrait venir de l’utilisation d’un véritable proxy inverse, tel que nginx ou squid, dont les temps de réponse sont parfois plus intérssants que ceux d’Apache, plus lent par nature.
Intéressant ton article merci pour le récapitulatif…Je ne connaissais pas toutes ces commandes apache, je vais m’y mettre.
Je suis tout a fait d’accord qu’au niveau SEO je ne sais pas si la vitesse de chargement est vraiment prise en compte mais en tout cas pour les internautes c’est très important.
J’avais déjà vu les chiffres que tu donnes sur amazon, google sur le site d’oseox j’avais été impressionné par les différences de conversion….
Oula ! merci de l’explication mais bien compliqué pour mon petit blog et mes faibles connaissances je crois
Si je peux me permettre, il me semble qu’on pourrait également citer un cinquième levier, qui serait lui le développement logiciel du site, à savoir comment le site est codé, son architecture, son code HTML, CSS et Javascript …
Sinon, pareil que les autres, je ne suis pas convaincu de l’intérêt spécifique de ce module apache, peut être pertinent quand on part de vraiment très loin, mais pour ceux qui travaillent déjà ces problématiques en amont, les gains sont minimes.
Merci pour le commentaire.
Je plaçais ce que tu appelles « développement logiciel » dans mon levier « on site ».
Je me demande bien où peut on trouver des hébergeurs qui utilise cette module
S’agissant d’un module expérimental, je ne pense pas que ça existe pour l’instant.
J’ai lu récemment sur abondance je crois que Mat cutt disait que les sites qui étaient pénalisés à cause de leur lenteur représentaient moins de 1%
on peut collectivement espérer être dans les 99% vous croyez pas ?? :)
C’est sympa, je connaissais pas, ça m’aurais éviter pas mal de boulot sur un site >.<
De même, je l’ai installé sur l’une de mes machines virtuelles. En théorie, le site est plus compact à charger, ce qui doit profiter notamment aux visiteurs à faible bande passante, ou à bande passante facturée au poids (Internet mobile). Cependant, publiant déjà des images compressées au maximum pour une qualité optimale, et usant de solutions de cache par ailleurs très efficaces, je n’ai pas constaté de gain autre que très mineur. Le véritable gain pourrait venir de l’utilisation d’un véritable proxy inverse, tel que nginx ou squid, dont les temps de réponse sont parfois plus intérssants que ceux d’Apache, plus lent par nature.
+1
Pour mon magento j’utilise le module gratuit gtmetrix (http://gtmetrix.com/) qui propose la même chose
On peut aussi faire un test sur leur site de Google page speed et Yahoo yslow avec sauvegarde de l’historique