Dans la première partie de cette série nous avons vu comment optimiser le nombre de requêtes nécessaires au chargement d'une page sur votre site web.
Dans cette deuxième partie nous allons nous intéresser à un autre domaine sur lequel vous pouvez agir pour améliorer la rapidité de votre site: la taille des ressources téléchargées.
Votre site web utilise à priori deux catégories principales de ressources:
Que ce soit pour l'une ou l'autre de ces catégories de ressources, l'idée est de réduire autant que possible leur poids (la taille des fichiers), afin d'accélérer leur téléchargement et donc diminuer le temps de chargement des pages de votre site web.
L'optimisation des images peut se faire à plusieurs niveaux:
Prenons l'exemple d'une photo, prise avec un appareil numérique 6MP (cela pourrait être bien plus!), et voyons ses paramètres (cliquez sur une image pour l'agrandir) :
image originale |
3008x2000 3'308 Ko 0% |
afficher |
image compressée |
3008x2000 759 Ko - 77% |
afficher |
image redimensionnée |
752x500 345 Ko - 89% |
|
image redimensionnée et compressée |
752x500 70 Ko - 97% |
|
vignette |
248x165 16 Ko - 99.5% |
(pour les curieux, il s'agit d'une photo des Dents du Midi, prise depuis le pied de la Pointe de Bellevue)
Comme vous pouvez le constater, la compression réduit déjà fortement la taille du fichier image, sans effet visible notable.
L'image redimensionnée et compressée apporte un nouveau gain de taille appréciable (le fichier "pèse" 97% de moins que l'original!) tout en restant suffisante même pour un affichage en grand.
Inutile donc de télécharger vos images originales vers votre serveur web (sauf bien sûr si votre but est explicitement de mettre à disposition vos photos), des versions compressées et redimensionnées feront parfaitement l'affaire.
Pour redimensionner et compresser vos photos, servez-vous d'un logiciel de retouche d'image (il en existe de nombreux, aussi gratuits). Au moment d'enregistrer, choisissez un format JPG ou PNG (pas tiff ou bmp) et indiquez la qualité/compression souhaitée ("qualité normale", "qualité 80%", "compression moyenne")
Pour optimiser des images au format PNG, vous pouvez utiliser par exemple l'outil en ligne de commande OptiPNG1.
Outre le travail discuté ci-dessus pour réduire le poids de vos images, il faut également veiller à utiliser la bonne taille d'image au bon endroit.
En effet, pourquoi demander à vos visiteurs de télécharger une photo pleine taille si c'est pour l'afficher en tout petit ? Il vaut mieux afficher une image redimensionnée adaptée à la situation, puis éventuellement afficher une image de plus grande taille seulement lorsque nécessaire.
L'exemple type de mise en oeuvre de ce fonctionnement est une galerie d'images:
Dans une galerie telle que celle-ci, plutôt que d'afficher en petit de grandes images, on a créé des miniatures (vignettes) qui sont beaucoup plus rapides à télécharger et mieux adaptées. Les grandes images sont affichées uniquement si demandé par l'utilisateur par un clic sur une vignette (comportement mis en place par Colorbox2, un composant javascript).
Si votre site est basé sur un CMS, vous disposez probablement d'un outil intégré de redimensionnement d'image, outil qui vous permet de créer les variantes d'images et vignettes nécessaires directement depuis votre navigateur web.
Si votre site et son CMS sont bien pensés et bien configurés, la création de vignettes et de variantes d'images peut même se faire automatiquement!
Deuxième catégorie de ressources à traiter, les fichiers "techniques" (feuilles de styles CSS décrivant la présentation du site, fichiers de code Javascript des modules et fonctionnalités) de votre site.
Votre site fait sans doute appel à des outils tiers, tels que jQuery (bibliothèque javascript qui facilite l'écriture de scripts multi-plateformes) ou Bootstrap (collection d'outils JS et CSS pour la mise en page). Ces outils sont fournis sous forme de fichiers CSS et Javascript à intégrer à votre site. Ils existent usuellement en deux versions:
La version "minifiée" (réduite, compressée) est beaucoup plus légère et optimisée pour l'utilisation en situation réelle. Privilégiez donc toujours les version "minifiées".
La version non compressée est utile si vous devez lire le code, car elle comporte des commentaires des concepteurs et une structure facilitant la lecture du code, mais les fichiers sont plus lourds.
Si votre site comporte des fichiers CSS et JS personnalisés / développés spécifiquement, c'est à vous de faire en sorte de les réduire avant de les mettre en production sur votre site web.
Pour ce faire vous pouvez utiliser par exemple Closure Compiler3 de Google, un outil en ligne permettant de réduire du code Javascript. Cet outil retire les commentaires et espaces inutiles, mais il est également capable d'analyser plus finement le code fourni pour renommer les fonctions et paramètres afin de les raccourcir, retirer les bouts de code "mort" (jamais utilisés), etc.
js original// ceci est un commentaire
function hello(name) {
var prefix = 'Hello';
alert(prefix + ', ' + name);
}
hello('Yves');
js compressé function hello(a){alert("Hello, "+a)}hello("Yves");
Ci-dessus un exemple très simple de code Javascript avant / après compression.
Si votre site utilise un système de gestion de contenu, vous disposez très probablement de réglages permettant de compresser automatiquement les ressources CSS et JS. Ci-dessous la marche à suivre pour un site web basé sur Drupal 7:
Ces mêmes réglages permettent aussi de limiter le nombre de fichiers à télécharger, comme présenté dans la première partie de cette série sur l'optimisation du temps de chargement.
Au delà de la réduction de la taille des ressources et de la limitation du nombre de requêtes nécessaires au chargement de votre site web, il existe encore d'autres techniques pour améliorer la rapidité d'affichage de vos pages, par exemple:
Toutes ces optimisations ont pour but de réduire la taille du contenu au-dessus de la "ligne de flottaison" (partie initialement visible de votre page web), afin de permettre un affichage le plus rapide possible du "haut" de vos pages (le restant du contenu et des ressources étant chargé ensuite).
Bien que potentiellement utiles ces optimisations sont plus difficiles à mettre en oeuvre et ne seront pas présentées plus en détails ici - pour en apprendre d'avantage vous pouvez tester votre site web et obtenir des recommendations via un outil comme PageSpeed Insights4.
Bonnes optimisations!
Vous utilisez d'autres outils et techniques utiles ? Partagez vos expériences dans les commentaire ci-dessous!
Vous pouvez aussi consulter mes services web pour en apprendre plus ou me contacter pour en discuter.
1) OptiPNG - outil d'optimisation d'images (lien)
2) Colorbox - plugin jQuery de galerie d'images (lien)
3) Closure Compiler Service - outil d'optimisation Javascript (lien)
4) PageSpeed Insights - outil de diagnostique de rapidité (lien)
Yves Bresson est ingénieur en informatique, ex-consultant pour diverses sociétés de service de l'arc lémanique, aujourd'hui développeur web et mobiles (Apps, responsive-web) indépendant à Lausanne. S'il fait beau il est probablement en randonnée quelque part dans les Alpes, idéalement dans un coin reculé sans couverture réseau ;-)