Performance dès la conception

Rapide par construction.
Mesuré dans votre navigateur.

La vitesse n’est pas une extension ajoutée à la fin. Sur notre nouveau système, elle se décide d’avance : des pages assemblées avant la première visite et gardées près de qui les demande, des images taillées pour l’écran qui les reçoit, des vidéos qui attendent leur tour, du JavaScript seulement là où l’on touche. Cette page en montre la mécanique, puis se mesure sur votre appareil.

Les chiffres viennent de ce site et d’autres bâtis sur notre nouveau système, mesurés là où c’est indiqué, avec la date et la méthode. Les schémas sont illustratifs là où c’est indiqué.

01 · La différence

La même page. Avec et sans.

Cette page même, chargée avec un processeur bridé sur une connexion lente. À côté, la même page sans la stratégie : photos en pleine taille, polices venues d’un hôte extérieur, tout son code d’emblée.

Mesuré et modélisé · 2026-09-28

Avec

Mesuré

Cette page · telle qu’elle se charge

Reçu
0,0 ko
Requêtes
0
  1. Premiers mots1,6 s
  2. Plus grand élément2,7 s
  3. Terminé4,1 s

Sans

Modélisé

Cette page · sans la stratégie

Reçu
0,0 ko
Requêtes
0
  1. Premiers mots1,7 s
  2. Plus grand élément51 s
  3. Terminé55 s
Octets reçusmême échelle
4 Mo8 Mo12 Mo

La même page se charge deux fois sur une seule horloge, avec la stratégie et sans elle.

Page entière · ordinateur · lue jusqu’en bas

Poids total
Avec : 2,9 MoSans : 18 Mo
Requêtes
Avec : 117Sans : 125
Services externes
Avec : 0Sans : 3

Premier chargement · laboratoire

Plus grand élément
Avec : 2,7 sSans : 51 s

Essai en laboratoire sur la version de production de cette page, sur notre nouveau système : cache froid, processeur ralenti ×4, 150 ms, 1,6 Mbit/s. « Sans » est modélisé.

Comment c’est mesuré

Un Chromium automatisé, sur un profil de laboratoire de la classe des téléphones : l’étalon habituel pour comparer des chargements à armes égales. Fenêtre de 412×915 à 2,625×, processeur ralenti ×4, latence de 150 ms, 1,6 Mbit/s en descente et 750 kbit/s en montée, cache désactivé. Trois essais ; celui dont le plus grand affichage est médian est montré. La page est celle-ci, issue d’une version de production servie depuis la machine du studio, avec un réseau simulé : le premier octet relevé est la latence simulée plus celle de la machine, il tient lieu de celui d’un cache de bordure et n’en est pas une mesure. Le poids total et le nombre de requêtes viennent d’un chargement de bureau sans bridage de la même page, lue jusqu’en bas, le même jour. « Prête » veut dire que le plus grand élément est affiché. L’horloge est à l’échelle pendant les 10 premières secondes, où tous les affichages ont lieu, puis comprime les 50 secondes restantes.

La version « sans » n’est pas une seconde mesure. C’est cette même page, avec quatre stratégies retirées une à une et le coût réel de chacune rendu à partir de parties de cette page que nous avons mesurées.

  • Photos en pleine taille — les 3 photos que cette page charge (4 requêtes une fois comptées les tailles adaptatives), chacune remplacée par le fichier en pleine taille derrière elle, l’original sous licence avant qu’on le taille pour le web : +15 Mo sur la page, dont 9,6 Mo pour l’arrière-plan sous le titre, qui est aussi le plus grand élément.
  • Polices venues d’un hôte extérieur — la typographie propre à cette page, servie par Google Fonts plutôt que par ce site : les mêmes fichiers, 354 ko depuis Google contre 354 ko d’ici. Le coût est du temps : la feuille de style vient d’un autre hôte, et rien ne peut s’afficher avant qu’elle soit arrivée.
  • Tout le code d’emblée — les trois morceaux de ce site qui ne sont chargés qu’au moment où on y recourt, comptés comme le code et les documents que le navigateur télécharge pour chacun : la bibliothèque de carte (275 ko), la vérification du formulaire de contact, son script et le cadre qu’il dessine (124 ko), et la machine à palettes du menu (44 ko). +443 ko ajoutés au premier chargement. Les tuiles de la carte sont des données qu’une page sans carte ne charge jamais : elles restent dehors.
  • Aucun cache de bordure — le premier octet est gardé exactement tel que mesuré (176 ms) : nous n’inventons pas un rendu d’origine plus lent à chronométrer.
Avec — points de mesure (Mesuré)
Point de mesureTempsReçu
Premier octet176 ms—
Premiers mots (FCP)1,6 s193 ko
Plus grand élément (LCP)2,7 s278 ko
DOM prêt1,4 s132 ko
Chargement terminé4,1 s700 ko
Sans — points de mesure (Modélisé)
Point de mesureTempsReçu
Premier octet176 ms—
Premiers mots (FCP)1,7 s193 ko
Plus grand élément (LCP)51 s10 Mo
DOM prêt1,4 s132 ko
Chargement terminé55 s11 Mo

02 · Le rendu

La page est prête avant qu’on la demande.

WordPress reste là où votre équipe écrit, jamais là où les visiteurs attendent. Chaque page est assemblée d’avance et gardée en bordure du réseau ; une modification enregistrée se reconstruit en arrière-plan.

Illustratif

01 · WordPress

Là où votre équipe écrit

En attente d’une visiteÉcoulé0 ms

  1. Articles
  2. Métadonnées
  3. Options
  4. Menus

02 · Construction et cache

Le site, pré-rendu

Contournée par chaque visite

03 · La bordure

Près de qui la demande

Contournée par chaque visite

04 · Visiteur

0Visiteurs envoyés

Un site WordPress typique. Chaque visite fait tout le chemin jusqu’à WordPress.

Ce que chaque modèle a répondu
ModèleDernière réponseJusqu’à WordPress
WordPress typique——
Notre nouveau système——

Mesuré le 2026-09-28 : 10/10 requêtes répétées en HIT sur 5 sites de notre nouveau système · premier octet ≈131 ms

Comment c’est mesuré

Le dessin · illustratif

Le visiteur, la requête et la reconstruction sont dessinés à un rythme qui se suit, pas au chronomètre. Le minuteur du site typique compte ce dessin, pas une mesure d’un vrai site.

Les deux chiffres · mesurés

Mesuré depuis une seule machine, une requête à la fois, à une seconde d’intervalle, trois visites sur chacun de 5 sites bâtis sur notre nouveau système. 10 requêtes répétées sur 10 ont été servies par le cache de la bordure (un HIT dans l’en-tête de cache de la réponse) ; sur les 5 premières requêtes, 4 l’ont été et une était STALE, un rafraîchissement déjà dû. Le premier octet est l’attente une fois la connexion ouverte, médiane de 14 réponses HIT, ≈131 ms : il mesure le site, pas ce réseau.

Comment les pages sont rendues

  • Pages de contenu : statique ou ISR
  • Dynamique : seulement pour le travail propre à chaque visiteur — formulaires, connexion, paiement, webhooks

Documenté Sur l’un de nos sites boutique, les 14 routes dynamiques sont toutes de ce type. Aucune page de contenu n’est dynamique.

03 · Images

Chaque image est taillée pour l’écran qui la reçoit.

Une photo arrive énorme, avec les notes de l’appareil à l’intérieur. Nous retirons ce qui est privé, plafonnons l’excès et laissons chaque écran chercher la taille qu’il affiche vraiment.

Mesuré · 2026-09-28

01 · Une photo, trois coupesBarre : ce qui reste du poids de l’original

  1. Nuages d’orage traversant de sombres sommets alpins

    L’original

    3 200 × 2 133 px

    JPEG

    4,96 Mo

  2. Retrait

    25 ko de notes de l’appareil à l’intérieur25 ko de notes de l’appareil retirées

    4,96 Mo4,94 Mo

    −0,5 %
  3. Plafond

    3 200 px de large3 200 → 2 400 px

    4,94 Mo245 ko

    −95 %
  4. Encodage

    JPEGJPEG → WebP, mêmes pixels

    245 ko90 ko

    −63 %
02 · Quel écran ?Pixels nécessairesServiBarre : part du plus gros fichier serviPoidsAllègement
  • Téléphone390 × 3 = 1 170 px1 200 px18 ko272× plus léger
  • Tablette820 × 2 = 1 640 px1 920 px45 ko112× plus léger
  • Portable1 440 × 2 = 2 880 px2 400 pxplafonné90 ko55× plus léger
  • Grand écran2 560 × 1 = 2 560 px2 400 pxplafonné90 ko55× plus léger

Chaque chiffre est mesuré sur cette photo : son original sous licence, puis l’optimiseur d’images de cette page.

Comment c’est mesuré

04 · Vidéo

Des vidéos qui attendent leur tour.

Chaque boucle est taillée dans notre propre outil, le Looper : plus courte, plus légère, muette, index au début. Sur la page, elle n’est chargée qu’au moment d’être vue et se met en pause quand on la dépasse.

A · Le passage

Mesuré · 2026-09-28
  1. 5,01 Mo
  2. 2,10 Mo−58 %
  3. 3,91 Mo−22 %
  4. 2,75 Mo−45 %
  5. 2,75 Mo−45 %
  6. 2,75 Mo−45 %
  7. 444 ko−91 %
Avant5,01 Mo

Une vraie boucle de ce site, avant que le Looper n’y touche : le clip brut.

Image
1280×720
Cadence
30 fps
Durée
20 s
Audio
Aucun
Index
à 0,07 %

Poids à chaque étape : Avant 5,01 Mo, Coupe 2,10 Mo, Aller-retour 3,91 Mo, Taille 2,75 Mo, Silence 2,75 Mo, Index en tête 2,75 Mo, Encodage 444 ko.

B · Le réveil

Illustratif · tailles réelles
Lac de forêtEndormie—
Poussières bleuesEndormie—
Fumée violetteEndormie—
Au chargement
0 ko
avant tout défilement
Sans la stratégie
2,32 Mo
tout dès le départ
Chargé jusqu’ici0 ko

Un film se réveille un écran plus tôt, joue à l’écran et se met en pause une fois dépassé.

Fichier publié, pesé tel que serviÉtape reproduite, notre propre réencodage

Comment c’est mesuré

A. Avant et Après sont les deux fichiers publiés, pesés tels que servis et lus pour leur taille d’image, leur cadence, leur durée et leur audio. La position de l’index vient des blocs de premier niveau de chaque fichier : dans les deux, l’index précède le média (octets 32–3 693 pour la source, 32–2 323 pour le résultat). Les cinq étapes entre les deux sont notre propre réencodage des mêmes montages, puisque le Looper ne garde pas ses exports intermédiaires. La barre monte à l’aller-retour parce que la durée double ; rien n’est lissé.

B. La page est un dessin ; les tailles sont réelles : Lac de forêt 776 ko, Poussières bleues 1,19 Mo, Fumée violette 356 ko, image fixe 49,8 ko. Les trois boucles sont réglées comme la bande du lac de forêt de l’accueil : une image fixe pour tous les appareils, le film sur les écrans de 1 081 px et plus, jamais sur une connexion qui économise les données. D’autres boucles du site ont d’autres réglages. « Au chargement » est ce que la page dessinée charge avant tout défilement : rien, puisqu’aucune boucle n’est à moins d’un écran du premier. « Sans la stratégie » est la somme des trois films, tous chargés dès le départ.

05 · JavaScript

Du code seulement là où l’on touche.

Les mots et les images n’ont besoin d’aucun JavaScript pour apparaître. Les parties interactives de ce site arrivent d’elles-mêmes, au moment où l’on s’en sert.

Mesuré · 2026-09-28

Cette page · première visite

HTML36 ko
CSS71 ko
Polices354 ko
Images et film893 ko
Code245 ko

Toute la première visite : 1,6 Mo en 35 requêtes

Sur demande · hors de la première visite
  • La carte2,6 MoSur une page qui en montre une : 275 ko de code, puis ses tuiles.
  • La vérification du formulaire124 koL’anti-robot, sur la page de contact seulement.
  • La palette du menu44 koLe dessin de la carte Design du menu : 44 ko de code et de styles.

Arrive avec cette page

Sans la stratégie

245 ko

688 ko

Calculé

de code. Toute la première visite : 1,6 Mo.

de code sur chaque page, 2,8 fois plus.

Le code de la carte, de la vérification et du menu d’emblée, pour chaque visiteur.

Une personne lit cette page. Rien n’est demandé.

Chargé d’avance au repos, sur ordinateur : 52 ko. La page d’accueil et cette page dans l’autre langue. Les pages du menu attendent un survol ou le focus.

Version de production · Chromium de bureau · cache désactivé · 2026-09-28 · « Sans la stratégie » calculé

Comment c’est mesuré

Chaque chiffre est ce que le navigateur a reçu sur le réseau, en-têtes et corps, lors d’une première visite de la version de production de cette page : Chromium de bureau à 1440 × 900, sans limitation, rien en cache, personne de connecté ; trois passages, le médian retenu (ceux de la page elle-même étaient identiques à l’octet). La colonne ne compte que les requêtes propres à cette page : le chargement d’avance du navigateur pour d’autres pages y a été bloqué et figure sur sa propre ligne. « Images et film » comprend la boucle sous le titre, que seuls les écrans larges chargent une fois la page posée.

La carte
La bibliothèque de cartes que la page Vie privée charge quand la carte approche de l’écran, puis le style, les symboles, les polices et les tuiles vectorielles qu’elle demande en s’ouvrant, à un hôte de tuiles extérieur. Mesuré depuis cette page, une fois posée et la carte amenée à l’écran : le code est la bibliothèque, le reste des données.
La vérification du formulaire
Le widget anti-robot d’un service extérieur, chargé par la page de contact et par aucune autre : son script et le cadre qu’il dessine. Mesuré avec la clé d’essai du service, qui réussit toujours ; une clé réelle peut ajouter des scripts, il faut donc y lire un plancher.
La palette du menu
Le dessin de la carte Design du menu Expertise : deux scripts et une feuille de styles, importés la première fois que le menu s’ouvre au survol ou au focus. Mesuré depuis la page d’accueil, une fois posée : tout y est du code et des styles.
Sans la stratégie
Le code de cette page plus celui des trois morceaux ci-dessus, tous chargés avant que personne ne les demande, comme si chaque page les portait : la bibliothèque de carte, le script et le cadre de la vérification du formulaire, la machine à palettes du menu, chacun compté comme le code et les documents que le navigateur télécharge pour lui. C’est une addition, pas une mesure séparée, et aucun autre site n’y intervient. Les tuiles de la carte ne sont pas ajoutées : ce sont des données, et une page sans carte n’en charge jamais.
Chargé d’avance
La même visite, le navigateur libre de charger d’avance, a atteint 1,7 Mo en 49 requêtes, soit 52 ko de plus que la colonne : 17 ko de code, puis les styles et les données de page de la page d’accueil et de cette page dans l’autre langue, les deux liens de l’en-tête qui n’attendent pas un survol. Les pages vers lesquelles le menu mène ne sont chargées qu’au survol ou au focus de leur lien, pas avant.

Ce que pèse cette page : HTML : 36 ko ; CSS : 71 ko ; Polices : 354 ko ; Images et film : 893 ko ; Code : 245 ko ; Arrive avec cette page : 245 ko ; Sans la stratégie : 688 ko ; Sur demande · hors de la première visite : 0 ko.

06 · La preuve

Mesuré sur votre appareil, maintenant.

Pas notre laboratoire, cette fois : le vôtre. Votre navigateur garde le registre du chargement de cette page et de la vitesse à laquelle elle vous répond. Le voici, face aux seuils de Google.

En direct · votre appareil

Lecture de votre navigateur…

Premier octetTTFB
Lecture…
Premiers motsFCP
En attente…
Plus grand élémentLCP
En attente…
Décalage visuelCLS
Lecture…
RéactivitéINP
Cliquez pour mesurer

Images sur cet appareil

Les 120 dernières
Dernière
0,0 ms
Moyenne
0,0 ms
Perdues
0

Test de charge

60 tuiles animées de deux façons, 5 s chacune.
Réaffichage continulargeur + ombre portée

En attente

Compositeur seultransformation + opacité

En attente

Portée
Cette page
Requêtes
—
Réseau
—
Cache
—
JavaScript
—
Hôtes externes
—
Comment c’est mesuré

Chaque chiffre ici est lu depuis une API que votre navigateur expose déjà à toute page. Rien n’est envoyé nulle part ; cette page n’a pas ses propres outils de mesure.

Navigation Timing
Premier octet : responseStart sur l’entrée de navigation de la page, moins activationStart si la page a été préaffichée.
Paint Timing
Premiers mots : l’entrée first-contentful-paint, selon la même règle.
Largest Contentful Paint
Plus grand élément : le dernier candidat. Il est jugé définitif quand vous interagissez avec la page ou quittez l’onglet, moment où une page cesse de faire grandir son « plus grand » élément, ou quand le chargement est terminé et qu’environ trois secondes passent sans nouveau candidat ; un candidat plus tardif rouvre ce verdict. Un candidat daté après le premier masquage de l’onglet est écarté.
Visibility State
Un onglet ouvert en arrière-plan n’est affiché qu’au moment où on le regarde : son premier affichage porte donc toute l’attente. Comme la bibliothèque web-vitals de Google, nous écartons les affichages postérieurs au premier masquage de la page, et nous le disons plutôt que d’afficher un « chargement » de plusieurs heures. Chrome garde cet historique ; les autres navigateurs nous disent seulement si l’onglet était masqué au début de cette lecture.
Layout Instability
Décalage visuel : chaque décalage non causé par votre propre geste, regroupé selon les fenêtres de session de Google (une nouvelle fenêtre s’ouvre après 1 s d’écart ou passé 5 s), la même définition que Chrome rapporte.
Event Timing
Réactivité : la plus lente de vos interactions jusqu’ici, dès que vous en avez fait une. Avec aussi peu d’interactions que sur une page comme celle-ci, cela rejoint de près l’estimation du 98ᵉ centile de Google. Les interactions plus rapides que 16 ms sont sous ce que l’API rapporte.
Resource Timing
Requêtes, octets et hôtes externes : chaque requête faite par cette page, telle que le navigateur la révèle (jusqu’à sa liste de 250). Les octets se répartissent entre ce qui a circulé sur le réseau et ce que le navigateur a servi depuis sa propre copie, soit l’essentiel d’un rechargement ; JavaScript compte les deux. Un fichier d’un autre hôte peut garder sa taille privée : il compte comme requête mais pas dans les octets, et un astérisque marque les totaux qui en omettent un.
Changement de page
Ce site change de page sans recharger. Le navigateur ne garde qu’une entrée de navigation, un premier affichage et un plus grand affichage par visite : ceux de la page où la visite a commencé. Si ce n’est pas celle-ci, nous la nommons et proposons de recharger celle-ci. Le décalage visuel et la réactivité couvrent toujours toute la visite.
Cache retour/avance
Une page restaurée depuis ce cache n’a pas été chargée. Nous l’indiquons, avec l’attente jusqu’à sa deuxième image affichée, plutôt que de montrer des chiffres de chargement périmés.
requestAnimationFrame
Temps par image : l’écart entre un affichage et le suivant, sur votre propre appareil, à l’instant. La fréquence d’affichage est lue dans la partie rapide de ces écarts, ramenée à la fréquence courante la plus proche ; une image est perdue quand elle a pris plus d’un intervalle et demi.
Les cadrans
Chaque cadran est coupé aux seuils de Google : « bon » occupe la moitié de l’arc, « à améliorer » va jusqu’à 80 %, « mauvais » est le reste. Dans la zone « bon », l’aiguille suit la racine carrée de la mesure, pour qu’une lecture rapide ne se perde pas contre le bord gauche. Le chiffre à côté du cadran est exact.

Rien de ce qui précède n’est envoyé où que ce soit. C’est une lecture, pas un rapport.

La pratique

La vitesse, ce sont mille petites décisions.

Deux sites sur la même technologie peuvent être à des secondes l’un de l’autre. La différence tient rarement au cadre de développement. Elle tient à la photo d’accueil laissée en pleine taille, à la requête qui contourne le cache, à la boucle qui joue hors de l’écran. Nous écrivons ces décisions, nous les vérifions sur de vrais appareils et nous les gardons après la mise en ligne.

Ce que montre cette page, c’est notre nouveau système, notre façon de bâtir aujourd’hui. Les sites livrés avant lui ne l’incluent pas forcément.

Un site rapide sur tous les écrans ?

Envoyez-nous votre adresse. Nous la mesurerons comme nous mesurons les nôtres.