Avancé 5 min 1 min de lecture Vitesse & temps de chargement

Mesurer le chargement avec les API Navigation et Resource Timing

Collectez des données réelles de performance avec les API Navigation Timing et Resource Timing, et diagnostiquez la vitesse vécue par vos visiteurs.

Par Nicolas Dupont Mis à jour le 23 juin 2026

Les outils de laboratoire comme Lighthouse ou la limitation de connexion des outils pour développeurs sont précieux pour comparer des optimisations dans des conditions stables. Mais ils ne disent rien de la vitesse réellement vécue par vos visiteurs, sur leurs appareils et leurs réseaux. Pour cela, il faut des données de terrain, c’est-à-dire des mesures collectées directement chez les utilisateurs pendant qu’ils naviguent.

Les API Navigation Timing et Resource Timing donnent accès à ces durées dans le navigateur, en JavaScript. Pour le SEO, l’enjeu est direct : ces mesures alimentent vos Core Web Vitals de terrain, que vous pouvez ainsi mesurer sur le terrain, et vous aident à repérer précisément ce qui ralentit le chargement, là où les tests synthétiques restent muets. Vous passez du ressenti à la donnée chiffrée.

Lighthouse compare des optimisations dans des conditions stables, mais il ne vous dira jamais ce que vivent vos vrais utilisateurs : pour ça, il faut des données de terrain. Les API Navigation Timing et Resource Timing donnent accès à ces durées directement dans le navigateur, ce qui alimente vos Core Web Vitals avec du concret. Mon conseil, c’est de collecter ces mesures sans pour autant pénaliser la page que vous instrumentez.

— Nicolas Dupont

Deux API complémentaires pour le terrain

Navigation Timing et Resource Timing se ressemblent beaucoup mais ne mesurent pas la même chose. La première décrit la requête du document HTML lui-même, c’est-à-dire la navigation vers la page. La seconde décrit chaque ressource dépendante : fichiers CSS, JavaScript, images, polices et autres. Les deux exposent leurs durées dans un tampon de performances que vous interrogez avec JavaScript.

JAVASCRIPT
// Récupérer les entrées Navigation Timing :
performance.getEntriesByType('navigation');

// Récupérer les entrées Resource Timing :
performance.getEntriesByType('resource');

Le cycle de vie d'une requête réseau

Une requête réseau passe par des phases distinctes : résolution DNS, négociation de la connexion (avec la poignée de main TLS en HTTPS), envoi de la requête puis réception de la réponse. Ce délai avant le premier octet correspond de près au TTFB, et savoir comprendre et mesurer le TTFB aide à isoler la part serveur du ralentissement. Chaque phase est exposée sous forme d’horodatage haute résolution. En soustrayant le début de la fin d’une phase, vous obtenez sa durée. Attention toutefois : certaines valeurs peuvent valoir zéro, par exemple lorsque le DNS provient d’un cache local ou pour les ressources d’autres origines qui n’autorisent pas le partage des durées.

Propriété Phase mesurée Ce qu'elle révèle

domainLookupStart / domainLookupEnd

Résolution DNS

Temps de traduction du domaine en adresse IP

connectStart / connectEnd

Négociation de connexion

Latence d’ouverture de la connexion au serveur

secureConnectionStart

Poignée de main TLS

Coût du chiffrement (vaut 0 sans HTTPS)

requestStart / responseStart

Requête

Délai avant le premier octet de réponse (proche du TTFB)

responseStart / responseEnd

Réponse

Durée de téléchargement de la ressource

redirectStart / redirectEnd

Redirections

Latence ajoutée par les chaînes de redirection

Collecter les durées sans pénaliser la page

Les méthodes getEntriesByType, getEntriesByName et getEntries conviennent pour une analyse ponctuelle, mais elles peuvent surcharger le thread principal si vous itérez sur de nombreuses entrées. L’approche recommandée est PerformanceObserver : il écoute les entrées au fur et à mesure et vous les transmet sans interrogation répétée. L’option buffered garantit que les entrées arrivées avant la création de l’observateur restent visibles.

JAVASCRIPT
const perfObserver = new PerformanceObserver((observedEntries) => {
  const entries = observedEntries.getEntries();
  for (let i = 0; i < entries.length; i++) {
    // Traiter chaque entrée ici
  }
});

perfObserver.observe({ type: 'navigation', buffered: true });
perfObserver.observe({ type: 'resource', buffered: true });

Envoyer les données pour analyse

Une fois les durées collectées, vous les transmettez à un point de terminaison pour les analyser, puis déboguer les performances sur le terrain. Privilégiez navigator.sendBeacon ou un fetch avec l’option keepalive : ces deux méthodes envoient la requête sans bloquer la page et survivent à la fermeture de l’onglet si nécessaire. Côté serveur, vous recevez une charge utile que vous pouvez décoder, traiter et stocker. Pensez à limiter le volume envoyé : transmettre l’intégralité des entrées à chaque visite serait excessif.

Ne raisonnez jamais en moyenne

Les moyennes masquent l’expérience réelle et sont faussées par les valeurs extrêmes. Travaillez en centiles. Pour repérer les expériences les plus lentes (celles qui pénalisent votre SEO), concentrez-vous sur le 75e centile et au-delà : c’est cette longue traîne qui décrit vos visiteurs en difficulté, pas la valeur médiane confortable.

Besoin d'aide pour mettre en pratique ? Nos experts SEO vous accompagnent.
Parler à un expert

À faire

  • collecter sur le terrain avec PerformanceObserver
  • raisonner en centiles
  • mesurer DNS, connexion, requête et réponse séparément
  • envoyer via sendBeacon

À éviter

  • se fier uniquement aux tests de laboratoire
  • calculer des moyennes
  • interroger le tampon en boucle sur le thread principal
  • oublier l’en-tête Timing-Allow-Origin pour les ressources tierces

Points clés à retenir

  • Distinguez les données de laboratoire (synthétiques) des données de terrain (utilisateurs réels)
  • Utilisez Navigation Timing pour le document et Resource Timing pour les ressources
  • Décomposez chaque requête en phases : DNS, connexion, requête, réponse
  • Collectez avec PerformanceObserver pour préserver le thread principal
  • Analysez en centiles, jamais en moyenne, et priorisez le 75e centile

Les API Timing transforment la performance ressentie en données chiffrées et exploitables.

Quiz : testez vos connaissances

  1. Quelle différence sépare Navigation Timing et Resource Timing ?

    • Navigation Timing mesure les images, Resource Timing le document HTML
    • Navigation Timing décrit la requête du document HTML, Resource Timing chaque ressource dépendante
    • Les deux API mesurent exactement la même chose

    Navigation Timing décrit la requête du document HTML lui-même, tandis que Resource Timing décrit chaque ressource dépendante (CSS, JavaScript, images, polices).

  2. Quelle approche privilégier pour collecter les durées sans surcharger le thread principal ?

    • getEntries appelé en permanence sur toutes les entrées
    • PerformanceObserver, qui écoute les entrées au fur et à mesure
    • Une boucle qui interroge le tampon en continu

    Itérer sur de nombreuses entrées avec getEntriesByType peut surcharger le thread principal. PerformanceObserver écoute les entrées au fil de l’eau, ce qui est recommandé.

  3. Comment raisonner pour analyser la vitesse réellement vécue par vos visiteurs ?

    • En se fiant uniquement aux tests de laboratoire
    • En centiles, car les moyennes masquent les expériences les plus lentes
    • En moyennes, plus simples et plus représentatives

    Les moyennes masquent l’expérience réelle et sont faussées par les valeurs extrêmes. Travailler en centiles permet de repérer les expériences les plus lentes.

À propos de l'auteur

Nicolas Dupont

Nicolas Dupont

Expert SEO Sénior & Fondateur

Il a fait grimper des sites en haut de Google et accompagné plus de 120 entreprises avant de fonder Les Webineurs. Sur votre projet SEO, vous échangez directement avec Nicolas, pas un commercial ni un junior. Un expert dédié et du trafic organique qui dure.

Voir le profil

Besoin d'un accompagnement SEO ?

Vous voulez savoir ce que vivent réellement vos visiteurs en matière de vitesse ? Mettons en place une mesure terrain fiable.

Faire le point avec un expert SEO