Le gonflement de JavaScript en 2024
(tonsky.me)Le problème de taille de JavaScript
- J’étais relativement peu au fait du développement frontend moderne, et je me souvenais d’articles sur l’ampleur du web, avec des pages atteignant plusieurs mégaoctets.
- J’avais l’impression que si la taille moyenne d’une page web est de 3 MB, le bundle JavaScript devait représenter environ 1 MB.
- J’ai donc mené une expérience pour vérifier ce qu’il en est réellement.
Méthode
- Utilisation de Firefox sur macOS (cela devrait être similaire sur d’autres navigateurs)
- Mode normal, pas en navigation privée (je voulais voir les chiffres à l’intérieur des applications, et cela me semblait plus proche de l’expérience réelle)
- Toutes les extensions désactivées
- Mesure du JavaScript uniquement
- Non compressé
- Service workers activés (pour une situation plus réaliste)
- Tout le cache désactivé (chargement depuis zéro)
Pages d’accueil
- Exemple de page typique avec un peu d’interaction : Wikipedia, 0.2MB
- Exemple de page légèrement gonflée : Linear, 3MB
- Exemples de mauvaises pages d’accueil : Zoom, 6MB ; Vercel, 6MB ; Gitlab, 13MB
Sites web principalement statiques
- Il est difficile de faire plus simple qu’un mur de texte statique.
- Medium a pourtant besoin de 3MB rien que pour cela.
- Substack demande 4MB, Quora 4.5MB, Pinterest 10MB et Patreon 11MB.
Recherche
- L’interaction de l’application se limite principalement à la recherche.
- StackOverflow nécessite 3.5MB, NPM 4MB, Airbnb 7MB et Booking.com 12MB.
- Google a besoin de 9MB pour afficher un simple champ de texte et une liste de liens.
Applications à interaction unique
- Google Translate a besoin de 2.5MB pour deux zones de texte.
- ChatGPT a besoin de 7MB pour une seule zone de texte.
Vidéo
- Loom demande 7MB, YouTube 12MB.
- Pornhub, un site attentif aux performances, ne demande que 1.4MB.
Audio
- SoundCloud et Spotify demandent tous deux 12MB.
- Google Mail nécessite 20MB.
- FastMail offre la même fonctionnalité avec seulement 2MB.
Productivité
- Todoist demande 9MB, Dropbox 10MB, 1Password 13MB et Trello 13.5MB.
- Discord a besoin de 21MB pour le chat.
Édition de documents
- Google Docs nécessite 13.5MB, Notion 16MB.
Réseaux sociaux
- Twitter demande 11MB, Facebook 12MB, TikTok 12.5MB, Instagram 16MB et LinkedIn 31MB.
Catégorie des géants
- Jira nécessite presque 50MB, Slack 55MB.
- react.dev commence à 2MB, mais peut grossir sans limite à mesure qu’on fait défiler la page.
Est-ce que cela s’aggrave de plus en plus vite ?
- En 2015, la taille moyenne d’une page web se rapprochait de celle de la version shareware de Doom 1 (2.5MB).
- En 2024, Slack atteint 55MB, soit, en JavaScript seul, la taille du Quake 1 original.
Quelle taille représente 10MB ?
- 10MB ne semble plus si énorme ni si particulier aujourd’hui.
- En supposant en moyenne 65 caractères par ligne, cela signifie qu’environ 150,000 lignes de code sont envoyées pour chaque site web.
- Google Maps reste relativement modeste selon les standards actuels, avec 4.5MB.
Conclusion
- La taille du téléchargement n’est pas le seul problème.
- Le JavaScript doit être analysé par le navigateur, conservé en mémoire, puis exécuté.
- Le contenu devrait, selon moi, l’emporter sur la taille du code.
- Gitlab a besoin de 13MB de code, soit plus de 500K lignes de JS, pour afficher une page d’accueil statique.
Avis de GN⁺ :
- Un diagnostic réaliste de l’état actuel du développement web, qui aide à comprendre l’impact de la taille du JavaScript des sites sur l’expérience utilisateur et les performances.
- Un rappel, à destination des développeurs frontend, de l’importance de l’optimisation et de la nécessité d’éviter l’usage de ressources au-delà du nécessaire.
- Des données intéressantes qui peuvent alimenter les discussions au sein de la communauté des développeurs autour des performances des sites web.
1 commentaires
Commentaires sur Hacker News