Introduction à la performance Web

  • Profil : Débutant, Expert
  • Technologie : (X)HTML, CSS, DOM
  • Thème : Qualité
  • Auteur : Nicolas Hoffmann
  • Mise à jour : 08/02/2011

En bref

Travailler les performances d’un site web peut être un travail de très longue haleine et extrêmement technique, impliquant de multiples acteurs et de multiples compétences. L’idée de cet article est de comprendre pourquoi ce domaine est en plein essor et d’en poser les bases.


Définition et cadre de l’article

Les performances web sont un domaine qui peut être extrêmement large. Cela peut aller de la rapidité du ou des serveur(s) jusqu’à l’utilisation efficace d’une base de données et d’un langage de web dynamique comme PHP, tout en passant par des intégrations HTML/CSS de qualité, l’optimisation des images, etc.

Cet article ne compte pas (et ne peut pas !) aborder tous ces multiples domaines. Nous allons plutôt nous concentrer sur l’optimisation de la vitesse d’affichage d’un site dans un navigateur.

Les performances web, pourquoi ?

Améliorer l’expérience utilisateur

Les visiteurs de votre site apprécieront que vos pages s’affichent le plus rapidement possible. De récentes études montrent qu’une baisse de la rapidité d’affichage d’un site peut induire une baisse de fréquentation significative, et cela tombe sous le sens : le visiteur d’un site de e-commerce aura tendance à passer chez un concurrent plus efficace si le site en question met 10 secondes à s’afficher. Pour prendre un autre exemple, attendre 3 à 4 secondes à chaque recherche sur Google serait extrêmement pénible.

Envisager le web mobile

Si la rapidité est importante sur un ordinateur disposant par exemple d’une bonne connexion ADSL, elle est quasiment critique en situation de mobilité. Les connexions sont en général moins rapides, et paradoxalement, les utilisateurs sont moins patients et attendent autant de rapidité que sur un ordinateur de bureau classique.

Optimiser les coûts

Un site dont les performances sont optimisées sera généralement moins gourmand en ressources (bande passante, processeur, ...). Sa configuration d’hébergement pourra être adaptée sur mesure et le site supportera facilement une charge importante de visites.

Améliorer son référencement

Google a par exemple récemment annoncé que les performances web étaient un des critères pris en compte dans son algorithme de référencement.

Améliorer les performances en pratique

Avant de chercher des solutions plus complexes, travailler les performances d’un site consiste d’abord par prendre de bonnes habitudes et de bons réflexes dès la conception. Prendre ces bonnes habitudes est parfois plus intéressant et plus aisé que de corriger après coup.

Il faut déjà mettre les fichiers Javascript et CSS en fichiers externes. Pour vos CSS, placez-les dans le head et non directement dans la page : le navigateur téléchargera ainsi rapidement les informations pour mettre en forme le site et pourra commencer son travail de stylage des éléments. Pour prendre une analogie, un ouvrier qui a déjà tous ses outils à portée de main travaillera plus vite que celui qui les a éparpillés sur le chantier ou qui doit les trouver ou les découvrir au fur et à mesure de son travail.

Quant au Javascript, il est par contre conseillé de le mettre le plus possible en bas de page, juste avant </body>, pour éviter qu’il ne bloque le rendu et le téléchargement des autres composants. Pour reprendre une analogie, il vaut mieux mettre une surcouche de peinture à la fin de la construction que pendant.

Créer des CSS et du HTML efficaces

Côté HTML

Privilégiez une structure légère, identifiez bien les éléments clés permettant l’application des styles et évitez autant que possible le code redondant ou inutile.

Bannissez les erreurs 404 de votre vocabulaire, pensez à vérifier les contenus de votre site avec un utilitaire comme Xenu Link Sleuth.

Côté CSS

À cet effet, vous pouvez utiliser un outil comme CSS Compressor. Ce dernier peut vous indiquer quelles notations sont à raccourcir pour prendre de bonnes habitudes.

Côté images

Indiquer les dimensions des images permet au navigateur de "réserver" leurs places et de poursuivre l’affichage du reste de la page pendant leur chargement. Ainsi, le navigateur n’a pas à "découvrir" la taille des images après les avoir chargées.

Exemple : <img src="mon_image_200_150.jpg" alt="" />, une fois corrigé pour <img src="mon_image_200_150.jpg" alt="" width="200" height="150" /> ne demandera pas inutilement au navigateur des reconstructions de la page pour prendre en compte la nouvelle taille une fois l’image chargée.

Et surtout ne redimensionnez pas ces images via le HTML : charger une miniature en 200 x 150 pixels sera bien plus rapide que de charger une image dont la résolution est supérieure (ex. : 800 x 600) pour la redimensionner via le navigateur (cette image sera beaucoup plus lourde).

En prime, l’affichage sera plus beau avec une image ayant une taille exacte, un navigateur n’est pas prévu pour ré-échantillonner une image.

Il va de soi que cette liste de conseils n’est pas exhaustive, néanmoins elle permet de poser une bonne base, voyons maintenant les optimisations proprement dites.

Réduire le nombre de fichiers à télécharger

Afficher une page implique pour votre navigateur des requêtes HTTP à envoyer au serveur. Le navigateur ne peut demander tous les fichiers en même temps (et particulièrement en situation de mobilité, où les connexions sont moins rapides). Ainsi envoyer moins de requêtes au serveur permettra à votre navigateur de télécharger plus rapidement les éléments nécessaires à l’affichage de la page, et donc de les afficher plus vite.

Dans cette optique, voici plusieurs points à prendre en compte :

Ainsi, vous n’utilisez qu’un seul fichier CSS pour votre site, sa version imprimable et sa version pour smartphone.

Exemple via un fichier .htaccess :

<FilesMatch "\.(gif|jpg|jpeg|png|ico)$">
Header set Cache-Control "max-age=31536000"
# 1 an pour les extensions précitées
header append Cache-Control "public"
# public indique que la mise en cache est possible 
# pour tout le monde y compris pour les proxies 
# (sinon nous aurions mis private pour empêcher 
#  les proxies de mettre en cache)
</FilesMatch>

Dans notre exemple, les images sont mises en cache pour une durée d’un an. Autrement dit, pendant un an, cela évite au navigateur ayant déjà chargé ces images de les retélécharger : l’économie en vitesse de rechargement (pour le navigateur) et en bande-passante (pour le serveur) peut être considérable. Toutefois, si un changement devait être opéré sur une image, il est recommandé de changer le nom de l’image, afin d’éviter que la mise en cache n’empêche de voir ce changement.

Réduire le poids des fichiers téléchargés

Une fois que le nombre de fichiers a été réduit autant que faire se peut, il faut également s’atteler à en réduire le poids. Fort heureusement, de nombreux outils et techniques offrent des possibilités efficaces et intéressantes.

PNG (le cas échéant GIF) et JPG doivent être optimisés. La plupart des logiciels proposent une option "optimisé pour le web" pour les images. Néanmoins, les résultats peuvent être insuffisants. Vous pouvez dans ce cas essayer des outils comme Yahoo Smush it ou PNG Optimizer, très efficaces et très pratiques.

Minifier CSS, Javascripts et même HTML si cela est possible est une bonne habitude à prendre. Pour les CSS, des outils comme CSS Compressor peuvent apporter des gains substantiels. Côté Javascript, Google Closure Compiler permet de produire du code Javascript plus efficace : il enlève le code inutilisé et permet donc d’en réduire le poids.

Il est également possible d’activer la compression de certains fichiers : en pratique le serveur compresse les données (code XHTML, CSS, ...), les fichiers transitent par le réseau, le navigateur décompresse les données avant de les interpréter. Les deux types de compressions utilisées sur un serveur Apache standard sont GZIP et DEFLATE : elles sont supportées par tous les navigateurs modernes.

Pour donner quelques exemples, une CSS de 8 ko peut voir son poids réduit à 2 Ko via la compression DEFLATE, et une bibliothèque comme Jquery voit son poids passer de 77 ko à une vingtaine de ko.

En pratique, un fichier htaccess suffit pour les activer. Par exemple, pour activer la compression DEFLATE :

AddOutputFilterByType DEFLATE text/html text/css application/javascript
#etc...

Première mise en garde : ce type de compression est à utiliser uniquement pour des contenus de type textuels. Il serait totalement inutile d’utiliser cela pour recompresser des images, cela consommerait beaucoup de ressources serveur pour un résultat nul.

Seconde mise en garde : ne misez pas tout sur la compression. Prenez bien le temps de travailler, d’optimiser et de minifier vos CSS avant de les compresser via GZIP ou DEFLATE. La rapidité d’affichage n’en sera que meilleure.

Des outils pour apprendre... et aller plus loin

Deux extensions de Firebug permettent de travailler et d’apprendre à perfectionner les performances des sites Internet : Yahoo Yslow et Google Page Speed.

Yslow propose des notes sur chaque point (mise en cache, compression, etc.) allant de A à F avec un indice global sur 100, et Pagespeed propose une note globale sur 100 en fonction de plusieurs paramètres. Ces deux extensions se complètent bien et permettent d’évaluer rapidement le travail effectué (ou à effectuer) sur les performances d’une page.

Google propose une documentation complète en rapport avec les points mentionnés via Page Speed : Google Code Web Performance Best Practices Yahoo en fait de même et propose également Best Practices for Speeding Up Your Web Site.

On peut également signaler GT Metrix, qui se base sur ces deux extensions et qui permet de comparer les résultats entre plusieurs pages.

Web page test permet (entre autres possibilités) de voir le temps que votre page va mettre à s’afficher lors d’un premier chargement, et lors d’un deuxième chargement. Cela peut vous permettre par exemple de voir l’efficacité de la mise en cache de vos contenus.

D’autres outils plus poussés comme Yottaa permettent d’analyser de manière plus globale les performances de pages internet : visualiser la vitesse d’affichage de votre site depuis divers points du globe, vérifier la complexité vos pages, etc.

Conclusion

Travailler et prendre en compte les performances des sites internet est une évidence qualitative. L’essor de la navigation en situation de mobilité, l’implication de divers acteurs majeurs du web comme Google ou Yahoo, et plus globalement le besoin d’afficher rapidement des sites parfois complexes et riches - d’autant plus dans des secteurs à forte compétitivité - font que les performances des sites internet sont à prendre en compte par tout professionnel du web, qu’il soit décideur ou technicien.

Il va de soi que cet article n’est qu’une introduction au domaine des performances web. Néanmoins, les techniques et outils abordés vous offrent la possibilité d’avoir des résultats très satisfaisants. D’autres pistes sont envisageables et commencent à voir le jour. Elles feront l’objet de très probables futurs articles.

Références :


Une question, une remarque ? Écrivez à l'auteur.

5 Messages de forum

Répondre à cet article

Page valide XHTML 1 Strict, CSS2 et accessible AA.
Ce site s'affiche mieux dans un navigateur conforme aux standards, voici pourquoi.
Site hébergé par yterium (depuis 2010) et par l'APINC (2002-2010) . Propulsé par SPIP.