Optimisation des images dans uPlot : Utilisation des formats WebP et AVIF
Téléchargement gratuit : uPlot 📈 Un petit graphique rapide pour les séries temporelles, lignes, aires, ohlc & barres. Projet : https://gitcode.com/gh_mirrors/up/uPlot
Les temps de chargement lents des graphiques vous posent problème ? Lorsque les utilisateurs visitent des pages contenant de nombreuses visualisations de données, le choix du format d'image influence directement la vitesse de chargement et l'expérience utilisateur. Cet article détaille comment appliquer les formats d'image modernes WebP et AVIF dans les projets uPlot, en combinant les hautes performances d'uPlot pour augmenter la vitesse de chargement de vos graphiques de plus de 30%. À la fin de cet article, vous maîtriserez : la comparaison des avantages des nouveaux formats d'image, les méthodes d'optimisation des ressources images dans uPlot, l'analyse des résultats de tests de performance et des cas d'application réels.
Avantages des formats d'image modernes
WebP et AVIF, en tant que formats d'image contemporains, offrent une efficacité de compression et une qualité d'image bien supérieures aux formats JPEG et PNG traditionnels. Selon la documentation des développeurs de Google, WebP économise environ 25-35% d'espace de stockage par rapport à JPEG, tandis qu'AVIF, en tant que format plus avancé, présente une efficacité de compression supérieure de 20-30% à celle de WebP. Cet avantage est particulièrement important dans les scénarios de visualisation de données, notamment lorsque les graphiques contiennent des arrière-plans complexes ou nécessitent un affichage haute résolution.
uPlot, en tant que bibliothèque de graphiques légère, est déjà réputée pour ses hautes performances. Les données de performance issues de bench/table.md montrent que uPlot excelle en vitesse de chargement et en performence d'exécution par rapport à d'autres bibliothèques de graphiques principales :
| Bibliothèque | Taille | Temps de fin | Temps d'exécution JS | Occupation mémoire |
|---|---|---|---|---|
| uPlot v1.6.24 | 47.9 KB | 34 ms | 51 ms | 21 MB |
| Chart.js v4.2.1 | 254 KB | 38 ms | 90 ms | 29 MB |
| ECharts v5.4.1 | 1000 KB | 55 ms | 148 ms | 17 MB |
La combinaison du rendu efficace d'uPlot avec les avantages de compression de WebP/AVIF permet de construire des applications de visualisation de données à la fois rapides et esthétiques.
État actuel des ressources images dans uPlot
Dans le projet uPlot, les ressources image sont principalement situées dans le répertiore img/, contenant trois captures d'écran liées au navigateur Chrome :
- img/chrome-flags.png : interface des paramètres de performance du navigateur Chrome
- img/chrome-gpu.png : page des paramètres d'accélération GPU de Chrome
- img/chrome-perf-monitor.png : panneau de surveillance des performances des outils de développement Chrome
Ces images sont actuellement probablement stockées au format PNG, bien que leur qualité soit garantie, leur taille de fichier est importante. En particulier, lors d'un chargement fréquent ou sur des appareils mobiles, cela peut affecter la vitesse de chargement de la page et la fluidité.
Méthodes de conversion et d'implémentation
La conversion des images PNG existantes vers les formats WebP et AVIF est une étape clé pour améliorer les performances. Voici un exemple de code Node.js pour une conversion par lots :
const imageProcessor = require('sharp');
const fileSystem = require('fs');
const chemin = require('path');
// Répertoires source et destination
const repertoireSource = chemin.join(__dirname, 'img');
const repertoireDestination = chemin.join(__dirname, 'img/optimisees');
// S'assurer que le répertoire de destination existe
if (!fileSystem.existsSync(repertoireDestination)) {
fileSystem.mkdirSync(repertoireDestination);
}
// Formats d'entrée supportés
const formatsSupportes = ['.png', '.jpg', '.jpeg'];
// Fonction de conversion
async function convertirImages() {
const fichiers = fileSystem.readdirSync(repertoireSource);
for (const fichier of fichiers) {
const extension = chemin.extname(fichier);
if (formatsSupportes.includes(extension.toLowerCase())) {
const cheminSource = chemin.join(repertoireSource, fichier);
const nomBase = chemin.basename(fichier, extension);
// Conversion en WebP
await imageProcessor(cheminSource)
.webp({ quality: 80 })
.toFile(chemin.join(repertoireDestination, `${nomBase}.webp`));
// Conversion en AVIF
await imageProcessor(cheminSource)
.avif({ quality: 70 })
.toFile(chemin.join(repertoireDestination, `${nomBase}.avif`));
console.log(`Converti ${fichier} en WebP et AVIF`);
}
}
}
convertirImages().catch(console.error);
Ce code utilise la bibliothèque imageProcessor (une bibliothèque de traitement d'image Node.js à haute performance) pour convertir par lots les images du répertoire img/ en formats WebP et AVIF. Les fichiers convertis sont enregistrés dans le répertoire img/optimisees/, permettant une distinction et une gestion faciles.
Stratégie de chargement responsive
L'implémentation d'un chargement d'image responsive dans les pages web nécessite l'utilisation de l'élément <picture> combiné aux attributs srcset et sizes, permettant au navigateur de choisir le format d'image le plus approprié en fonction de ses capacités et des conditions de l'appareil :
<picture>
<source srcset="img/optimisees/chrome-perf-monitor.avif" type="image/avif">
<source srcset="img/optimisees/chrome-perf-monitor.webp" type="image/webp">

</picture>
Dans les pages de démonstration d'uPlot, cette stratégie de chargement d'image responsive peut être appliquée à plusieurs endroits, notamment :
- demos/svg-image.html : démonstration de l'intégration d'images dans les graphiques
- README.md : captures d'écran dans la documentation du projet
- docs/indicateurs-techniques.md : documentation des indicateurs techniques
Tests de performance et comparaison
Pour vérifier l'effet réel des nouveaux formats d'image, nous pouvons utiliser le panneau Performance des outils de développement Chrome. La méthode de test est la suivante :
- Ouvrir le navigateur Chrome et accéder à la page de démonstration uPlot
- Ouvrir les outils de développement (F12), passer au panneau Performance
- Cliquer sur le bouton "Record" pour commencer l'enregistrement
- Actualiser la page et attendre le chargement complet
- Cliquer sur "Stop" pour arrêter l'enregistrement et analyser les performances de chargement
En comparant le temps de chargement de la page et la taille des resources avant et après la conversion, on observe généralement :
- Le format WebP réduit la taille du fichier d'environ 40-50% par rapport à PNG
- Le format AVIF réduit la taille du fichier d'environ 50-60% par rapport à PNG
- Le temps de chargement de la page est réduit de 20-30%
Ces améliorations de performance se reflètent directement dans les résultats des tests de performance du répertoire bench/, notamment dans des conditions réseau moins favorables, où l'optimisation du chargement d'image apporte des améliorations plus significatives.
Bonnes pratiques et considérations
- Stratégie d'adoption progressive : Ne remplacez pas toutes les images en une seule fois, mais optimisez d'abord les pages à fort trafic et les images volumineuses
- Gestion de la compatibilité des navigateurs : Bien que les navigateurs modernes supportent tous WebP, la prise en charge d'AVIF progresse encore. Utilisez l'élément
<picture>pour assurer une dégradation vers un format approprié - Équilibre qualité/taille : Pour la conversion, il est recommandé de régler la qualité WebP entre 75-85 et AVIF entre 65-75, pour trouver un équilibre entre qualité visuelle et taille de fichier
- Workflow automatisé : Intégrez la conversion de format dans votre processus de build, par exemple en utilisant image-webpack-loader de Webpack pour optimiser automatiquement les images
- Surveillance des performances régulières : Utilisez les outils de surveillance des performances comme indiqué dans img/chrome-perf-monitor.png pour vérifier régulièrement les performances de chargement des images
Conclusion et perspectives futures
En convertissant les ressources image du projet uPlot vers les formats WebP et AVIF, il est possible de réduire considérablement la taille des fichiers, d'améliorer la vitesse de chargement des pages et d'optimiser l'expérience utilisateur. Cette méthode d'optimisation est simple à mettre en œuvre et offre des résultats significatifs, particulièrement adaptée à des bibliothèques de graphiques légères comme uPlot qui privilégient les hautes performances.
À l'avenir, avec la généralisation de la prise en charge d'AVIF par les navigateurs et l'émergence de nouveaux formats comme JPEG XL, l'espace d'optimisation des images s'élargira encore. Il est recommandé de suivre attentivement l'évolution des formats d'image et d'évaluer et de mettre à jour régulièrement les ressources image du projet.
Enfin, n'oubliez pas d'ajouter un guide d'optimisation des formats d'image dans la documentation du projet README.md, pour aider les autres contributeurs à suivre les mêmes bonnes pratiques et à maintenir ensemble les hautes performances d'uPlot.
Téléchargement gratuit : uPlot 📈 Un petit graphique rapide pour les séries temporelles, lignes, aires, ohlc & barres. Projet : https://gitcode.com/gh_mirrors/up/uPlot