4 min de lecture
Ce qu’un outil télécharge avant que vous ne cliquiez
Notre détoureur envoyait 1386 Ko de JavaScript sur votre téléphone avant même que vous n’ayez choisi une photo. Personne ne les avait demandés et rien à l’écran n’en avait besoin. Voici comment ils sont arrivés là, à combien nous les avons ramenés, et comment mesurer n’importe quel outil en trente secondes.
Le chiffre que personne ne publie
Tous les sites d’outils publient leur liste de fonctions. Presque aucun ne publie ce que pèse la page avant qu’on s’en serve. C’est pourtant ce chiffre qui décide de la sensation : sur un téléphone en connexion mobile normale, chaque tranche de 400 Ko de JavaScript, c’est une seconde de plus à regarder une page qui a l’air prête et ne l’est pas.
Chez nous, ça compte plus qu’ailleurs. nopa tourne sur votre appareil — fusionner, compresser, transcrire se passe dans le navigateur, rien n’est envoyé. Le revers de cette promesse, c’est que le code doit arriver d’abord. Le téléchargement n’est pas un coût autour du produit : c’est le produit qui arrive.
Ce que nous avons trouvé dans notre propre code
La colonne « avant », c’est ce que nous livrions. La colonne « après », c’est la même page aujourd’hui, sans qu’une seule fonction ait été retirée.
| Page | Avant | Après |
|---|---|---|
| Détourage | 1386 Ko | 405 Ko |
| Emoji | 1318 Ko | 740 Ko |
| Transcription | 940 Ko | 402 Ko |
| Convertisseur de fichiers | 845 Ko | 403 Ko |
| Lecteur | 839 Ko | 427 Ko |
| Accueil | 325 Ko | 28 Ko |
| Catalogue et hubs | 318 Ko | 21 Ko |
Ce n’est jamais la fonction. C’est l’import.
Aucune de ces pages n’était lourde à cause de ce qu’elle fait. À chaque fois, c’était une seule ligne en haut d’un fichier, qui tirait quelque chose que la page n’exécuterait jamais.
- Une vérification « le modèle d’IA est-il déjà téléchargé ? » entraînait tout le moteur d’apprentissage automatique — 539 Ko — sur des pages qui ne chargent jamais de modèle. Elle lit désormais le cache du navigateur directement, en neuf lignes.
- Un utilitaire zip était importé en tête du moteur PDF : toute page qui compressait quoi que ce soit téléchargeait aussi 443 Ko de code PDF. Le charger au moment de s’en servir a divisé par deux quatre pages d’outils.
- Le sélecteur d’emoji livrait sa table de mots-clés — la moitié du jeu de données — avant la première frappe. Elle arrive maintenant avec votre première recherche, le seul moment où on la lit.
- Toute une bibliothèque d’animation se chargeait pour un seul panneau qui remonte sur mobile. Le navigateur a une API d’animation intégrée ; la bibliothèque est partie.
- Un index de catalogue de 373 Ko se chargeait sur chaque page pour afficher une rangée de liens « outils proches ».
Pourquoi il n’y a pas de chiffres concurrents ici
Nous voulions mettre d’autres outils dans ce tableau. Impossible de le faire honnêtement. Notre première tentative téléchargeait leurs pages et comptait les scripts du HTML ; résultat, une suite PDF très connue livrerait 2 Ko de JavaScript — parce que l’application réelle est chargée par le JavaScript et non écrite dans la page. Un chiffre que nous ne pouvons pas reproduire vaut moins que pas de chiffre, et un comparatif où nous nous notons nous-mêmes n’est pas un comparatif.
Le tableau ne contient donc que nos pages. Et au lieu de chiffres à croire sur parole, voici la méthode.
Mesurer n’importe quel outil en trente secondes
Ça marche sur n’importe quel site, y compris le nôtre. Si nos chiffres sont faux, c’est comme ça que vous nous prendrez en défaut.
- Ouvrez l’outil dans un navigateur de bureau, puis les outils de développement (F12), onglet Network.
- Cochez « Disable cache », filtrez sur JS et rechargez la page.
- Lisez le total transferred en bas avant de cliquer sur quoi que ce soit. C’est le téléchargement que vous payez à chaque visite à froid.
- Pour la promesse du traitement local : une fois la page chargée, passez le réseau hors ligne et lancez votre tâche. Si elle aboutit, le travail se fait sur votre appareil. Si elle échoue, votre fichier partait quelque part.
Ce que nous nous imposons désormais
Chaque route a un plafond strict de 600 Ko de JavaScript, et le script qui le mesure échoue bruyamment dès qu’une page dépasse. C’est ce qui empêche le retour du problème : les quatre correctifs ci-dessus ont pris une journée, et s’ils ont été nécessaires pendant des mois, c’est uniquement parce que personne ne comptait.
Les outils sont là quand vous en avez besoin, et aucun ne vous demandera de créer un compte pour savoir ce qu’il pèse.
Comment nous avons mesuré
Un script de notre dépôt ouvre chaque route dans un vrai Chromium, cache vide et service worker désactivé, et additionne les octets transférés de tous les scripts que la page réclame avant la moindre interaction. Pas la taille décompressée, pas le rapport du bundler : les octets sur le réseau, ceux que votre connexion paie vraiment.
Nous l’avons passé sur tout le site : accueil, catalogue et hubs, chaque page d’outil. Sept routes sont revenues au-dessus du mégaoctet.