Sobriété
Le poids se mesure, s’affiche et se signale. Aucun seuil ne fait échouer la CI : un seuil ne bloquerait que si je le posais moi-même. Cette règle remplace le « budget bloquant » de l’ADR-0006 (décision 5, D-106). C’est une préférence, pas une preuve.
Poids des pages et des paquets
Octets transférés après compression brotli, par type de ressource. Une page compte son HTML, ses feuilles de style, ses scripts, ses polices préchargées et ses images img ; les polices chargées à la demande ne sont pas comptées. Les chiffres se reproduisent :
npm -w @paulperigault/docs run build
npm run benchmark:weight| Page | html | css | js | font | image | wasm | Total | CO2e, nouveau visiteur | CO2e, visiteur de retour |
|---|---|---|---|---|---|---|---|---|---|
| / | 4,2 Kio | 6,6 Kio | 0,8 Kio | 33,2 Kio | 0,0 Kio | 0,0 Kio | 44,9 Kio | 6,8 mg | 3,4 mg |
| /components/button/ | 4,2 Kio | 5,5 Kio | 0,8 Kio | 33,2 Kio | 0,0 Kio | 0,0 Kio | 43,7 Kio | 6,6 mg | 3,3 mg |
| /tableau-de-bord/ | 5,7 Kio | 7,9 Kio | 0,8 Kio | 33,2 Kio | 0,0 Kio | 0,0 Kio | 47,7 Kio | 7,2 mg | 3,6 mg |
| /sobriete/ | 4,0 Kio | 4,6 Kio | 0,8 Kio | 33,2 Kio | 0,0 Kio | 0,0 Kio | 42,6 Kio | 6,5 mg | 3,2 mg |
Site : 592 fichiers publiés. Le plus gros fichier est/llms-full.txt, de 324,4 Kio.
| Paquet | Archive npm | Contenu décompressé |
|---|---|---|
| @paulperigault/astro | 103,5 Kio | 439,5 Kio |
| @paulperigault/color | 33,1 Kio | 92,1 Kio |
| @paulperigault/create | 47,0 Kio | 134,0 Kio |
| @paulperigault/css | 4,5 Kio | 11,1 Kio |
| @paulperigault/data | 36,7 Kio | 96,4 Kio |
| @paulperigault/dataviz | 33,1 Kio | 99,8 Kio |
| @paulperigault/guards | 29,2 Kio | 88,7 Kio |
| @paulperigault/mcp | 214,3 Kio | 784,3 Kio |
| @paulperigault/tokens | 23,3 Kio | 70,0 Kio |
Mobile, réseau lent, processeur bridé
Le test apps/docs/e2e/perf.spec.ts charge quatre pages sur un écran de 360 × 800, processeur ralenti ×4, « Slow 4G » (latence 150 ms, 1,6 Mbit/s). Il relève LCP, INP, CLS, le JavaScript en gzip et le nombre de fichiers de police, et les affiche dans le rapport Playwright. Les repères viennent de docs/benchmark/gap.md (LCP 2 500 ms, INP 200 ms, CLS 0,1) ; ils ne font échouer aucun test. Seul le fonctionnement est vérifié : la police du corps est préchargée et chargée.
Mesure du 2026-11-01, sur mon poste Windows avec Chromium, pour /, la page du bouton, le tableau de bord et cette page : LCP de 0,98 à 1,26 s, INP de 56 à 96 ms, CLS de 0, JavaScript de 1 005 octets en gzip, deux fichiers de police. Sur les runners de GitHub, l’INP est plus haut (D-021). Une seule série, un seul poste : ce n’est pas une distribution.
npm run e2e -- --project=chromium perf.spec.tsEstimation du carbone
Le modèle est Sustainable Web Design, version 4 (sustainablewebdesign.org, page lue le 2026-11-01). C’est un modèle descendant : il applique au volume transféré une énergie par gigaoctet pour trois segments (centres de données, réseaux, appareils), en partie opérationnelle et en partie incorporée, avec une intensité électrique de 494 gCO2e par kWh. La somme est de 0,300 kWh par gigaoctet, soit 148,2 gCO2e par gigaoctet pour un nouveau visiteur et un hébergement non déclaré vert.
- Nouveau visiteur : aucune ressource en cache. C’est la borne haute.
- Visiteur de retour : la moitié des octets en cache. Cette part est une hypothèse d’illustration, non mesurée ; le modèle ne donne aucune valeur par défaut.
Limites : c’est une estimation, pas une mesure ; elle ne dit pas quoi optimiser. Les sources du modèle divergent, et la page du modèle donne 430 TWh d’énergie incorporée pour les appareils contre 421 TWh d’énergie totale. Une estimation d’un autre modèle (OneByte, SCI) ne se compare pas à celle-ci. Le calcul est dans tools/benchmark/carbon.mjs, testé contre le gigaoctet de référence.
Offre gratuite de Cloudflare Pages
Les limites lues dans ladocumentation : 500 builds par mois, 20 000 fichiers par site, 25 MiB par fichier. Le nombre de fichiers et le plus gros fichier sont dans le tableau ci-dessus. Le nombre de builds du mois se lit dans le compte Cloudflare : je ne l’ai pas mesuré ici.