SEO technique

Améliorer le First Input Delay (FID) pour des interactions plus rapides

Patrick Stox
Patrick Stox est conseiller produit, spécialiste SEO technique et ambassadeur à Ahrefs. Il co-organise divers évènements comme le Raleigh SEO Meetup, Raleigh SEO Conference, Beer & SEO Meetup et Findability Conference. Il est aussi modérateur sur /r/TechSEO.
Le First Input Delay (FID) correspond au temps écoulé entre la première interaction d’un utilisateur avec votre page et le moment où la page y répond. Il mesurait la réactivité et faisait partie des trois indicateurs Core Web Vitals utilisés par Google pour évaluer l’expérience utilisateur d’une page. Le FID a été remplacé par l’Interaction to Next Paint (INP) le 12 mars 2024.

Voici quelques exemples d’interactions :

  • Cliquer sur un lien ou un bouton.
  • Saisir du texte dans un champ vide.
  • Sélectionner un menu déroulant.
  • Cocher une case.

Certains événements comme le défilement ou le zoom ne sont pas pris en compte.

Voyons quel score viser et comment l’améliorer.

Un bon score FID est inférieur à 100 ms et se mesure à partir des données du Chrome User Experience Report (CrUX). Il s’agit de données provenant de véritables utilisateurs de Chrome ayant accepté de partager ces informations lorsqu’ils visitent votre site. Il faut que 75 % des interactions obtiennent une réponse en moins de 100 ms.

Votre page peut être classée dans l’une des catégories suivantes :

  • Bon : <= 100 ms
  • À améliorer : > 100 ms et <= 300 ms
  • Médiocre : > 300 ms
Schéma des seuils FID : bon (≤ 100 ms), à améliorer (entre 100 et 300 ms) et médiocre (> 300 ms)

Données sur le FID

95,3 % des sites se situaient dans la catégorie « bon » pour le FID en avril 2023. Cette donnée porte sur l’ensemble des sites mesurés. Comme indiqué plus haut, il faut que 75 % des interactions obtiennent une réponse en moins de 100 ms pour qu’un site soit classé comme « bon ».

Graphique indiquant que 95,3 % des sites obtiennent un bon score FID en avril 2023

Sur la plupart des sites, la majorité des pages valident le test CWV pour le FID. Je ne pense pas que ce soit réellement la meilleure méthode pour mesurer la réactivité, et Google a remplacé le FID par l’Interaction to Next Paint (INP) en mars 2024. Au lieu de se limiter à la première interaction, l’INP examine la latence de toutes les interactions de l’utilisateur.

Graphique du pourcentage de pages obtenant de bonnes valeurs FID selon les données Core Web Vitals, la majorité des sites validant le test

Lorsque nous avons mené une étude sur les Core Web Vitals, nous avons constaté que pratiquement personne n’a besoin de se soucier du FID sur ordinateur, et que très peu de sites doivent s’en soucier sur mobile.

Comparaison des bonnes valeurs FID entre ordinateur et mobile, le FID étant rarement une préoccupation sur desktop

Peu de sites doivent s’inquiéter du FID, même sur les connexions lentes, puisque la plupart de leurs pages passent le test.

Graphique des bonnes valeurs FID par type de connexion, montrant que la plupart des pages passent le test même sur connexions lentes

Nos données au niveau de la page, issues de cette étude, vont dans le même sens. Le FID ne semble pas être une préoccupation pour la plupart des pages.

Le seul score FID qui compte vraiment provient du Chrome User Experience Report (CrUX), qui s’appuie sur les données de véritables utilisateurs de Chrome ayant choisi de les partager.

Il s’agit des données de terrain (field data), qui donnent la meilleure idée des performances réelles du FID dans différentes conditions de réseau, sur différents appareils, avec ou sans cache, etc. Ce sont aussi les données que Google utilise effectivement pour évaluer les Core Web Vitals.

Pour des tests cohérents et reproductibles, il existe également les données de laboratoire (lab data), collectées dans des conditions identiques. Le FID n’est pas disponible dans les tests en laboratoire, car les outils de test ne simulent pas d’interactions utilisateur. Vous pouvez toutefois utiliser le Total Blocking Time (TBT) comme indicateur de substitution. En améliorant les processus bloqués, vous améliorerez également votre FID.

Mesurer le FID pour une seule URL

PageSpeed Insights récupère des données de terrain au niveau de la page que vous ne pouvez pas interroger directement dans le jeu de données CrUX. L’outil fournit également des données à l’échelle du domaine afin de comparer les performances d’une page à celles de l’ensemble du site, et exécute des tests en laboratoire basés sur Google Lighthouse pour vous fournir le TBT.

Mesurer le FID pour plusieurs URL ou un site entier

Vous pouvez obtenir les données CrUX dans Google Search Console, classées dans les catégories bon, à améliorer et médiocre.

Capture d'écran du rapport Core Web Vitals dans Google Search Console, avec les données FID classées en bon, à améliorer et médiocre

En cliquant sur l’un des problèmes, vous obtenez une répartition par groupes de pages affectées. Ces groupes rassemblent des pages ayant des valeurs similaires, vraisemblablement issues d’un même modèle. Une seule modification appliquée au modèle suffira à corriger toutes les pages du groupe.

Capture d'écran de Google Search Console affichant la répartition par groupes de pages affectées partageant des valeurs FID similaires

Si vous souhaitez obtenir à la fois des données de laboratoire et des données de terrain à grande échelle, le seul moyen est de passer par l’API PageSpeed Insights. Vous pouvez vous y connecter facilement avec Site Audit d’Ahrefs et obtenir des rapports détaillés sur vos performances. C’est gratuit pour les sites vérifiés disposant d’un compte Ahrefs Webmaster Tools (AWT).

Capture d'écran de Site Audit d'Ahrefs présentant un rapport détaillé sur les performances CWV via l'API PageSpeed Insights

Notez que les données Core Web Vitals affichées dépendent du user-agent sélectionné pour votre crawl lors de la configuration. Si vous explorez le site en mode mobile, vous obtiendrez les valeurs CWV mobiles renvoyées par l’API.

Outil gratuit : vérifiez les CWV et Lighthouse jusqu’à 10 pages

Voici un autre outil gratuit qui vous permet d’analyser jusqu’à 10 pages ou sites simultanément pour vous comparer à vos concurrents.

Configuration :

  • Saisissez votre clé d’API Google PageSpeed Insights dans le champ prévu à cet effet. (Pour générer une clé d’API, voir ici.)
  • Ajoutez les URL à analyser (une par ligne).

Lancement de l’analyse :

  • Cliquez sur le bouton « Check CWV » pour démarrer la récupération des indicateurs. Un indicateur de progression affichera l’état des requêtes.

Consultation des résultats :

Les résultats sont présentés sous forme de cartes de score classées par catégorie :

  • CWV Desktop pour la page
  • CWV Desktop pour l’origine
  • Lighthouse Desktop
  • CWV Mobile pour la page
  • CWV Mobile pour l’origine
  • Lighthouse Mobile

Chaque indicateur est associé à un code couleur reflétant la performance :

  • Vert : Bon
  • Jaune : À améliorer
  • Rouge : Médiocre

Vérificateur en masse des Core Web Vitals

 
 

Voici un aperçu pour vous donner une idée de l’apparence des cartes de score. Vous pouvez aussi l’utiliser comme outil autonome : test de vitesse de site web (en anglais).

Aperçu de l'outil gratuit de test de vitesse de site web affichant les cartes de score CWV et Lighthouse pour desktop et mobile

Du JavaScript qui se dispute le thread principal. Il n’y a qu’un seul thread principal, et chaque script doit attendre son tour pour y exécuter ses tâches.

C’est comme une cuisinière à un seul feu sur laquelle vous devez cuire vos plats un par un, alors que plusieurs plats vous attendent.

Pendant qu’une tâche s’exécute, la page ne peut pas répondre aux interactions de l’utilisateur. C’est ce délai que l’utilisateur perçoit. Plus la tâche est longue, plus le délai ressenti par l’utilisateur est important.

Schéma illustrant comment une tâche JavaScript longue bloque le thread principal et retarde la réponse à l'interaction de l'utilisateur

Les pauses entre les tâches sont les occasions pour la page de basculer vers la tâche d’interaction utilisateur et de répondre à son action. Le phénomène est aggravé sur les appareils les moins performants, car le JavaScript peut mettre plus de temps à être traité et provoquer des délais plus longs.

Dans PageSpeed Insights, vous verrez un onglet TBT qui regroupe les problèmes liés au blocage du thread principal. Ce sont ces problèmes qu’il faudra résoudre pour améliorer le FID.

Capture d'écran de PageSpeed Insights affichant l'onglet TBT et les problèmes de blocage du thread principal à résoudre pour améliorer le FID

La plupart des pages passent les tests FID. Cependant, si vous devez travailler sur le FID, voici quelques pistes à explorer :

1. Réduisez la quantité de JavaScript

Si vous pouvez réduire la quantité de JavaScript exécuté, commencez par là. Concentrez-vous sur le JavaScript chargé en début de page. Si peu d’optimisations ont été réalisées, le début du processus de chargement peut être saturé par une multitude de scripts JavaScript qui essaient tous de s’exécuter sur cet unique thread principal.

2. Chargez le JavaScript plus tard si possible

Tout JavaScript dont vous n’avez pas besoin immédiatement doit être chargé plus tard. Il existe deux principales méthodes pour cela : les attributs defer et async. Ces attributs peuvent être ajoutés à vos balises <script>.

Par défaut, un script bloque le parseur le temps de son téléchargement et de son exécution. async permet au parsing et au téléchargement de se dérouler simultanément, mais bloque tout de même le parsing pendant l’exécution du script. defer ne bloque pas le parsing pendant le téléchargement, et le script n’est exécuté qu’une fois le parsing du HTML terminé.

Schéma comparant le comportement des attributs standard, async et defer lors du téléchargement et de l'exécution des scripts par rapport au parsing HTML

Lequel choisir ? Pour tout ce que vous voulez charger plus tôt ou qui comporte des dépendances, j’aurais tendance à privilégier async.

Par exemple, j’utilise généralement async pour les balises analytics afin de comptabiliser davantage d’utilisateurs. Préférez defer pour tout ce qui n’est pas nécessaire immédiatement ou qui n’a pas de dépendances. Ces attributs sont très simples à ajouter.

Voici quelques exemples :

Standard :

<script src="https://www.domain.com/file.js"></script>

Async :

<script src="https://www.domain.com/file.js" async></script>

Defer :

<script src="https://www.domain.com/file.js" defer></script>

3. Découpez les tâches longues

Une autre option consiste à fractionner le JavaScript pour qu’il s’exécute moins longtemps. L’idée est de prendre ces tâches longues qui retardent la réponse aux interactions de l’utilisateur, et de les découper en tâches plus petites qui bloquent moins longtemps. Cela passe par le code splitting, qui consiste à scinder le code en plus petits morceaux.

4. Utilisez les web workers

Il existe également la possibilité de déplacer une partie du JavaScript vers un web worker. Comme mentionné plus haut, le JavaScript se dispute l’unique thread principal du navigateur : c’est un contournement qui lui offre un autre endroit où s’exécuter.

Quelques compromis s’imposent en matière de mise en cache. De plus, le web worker ne peut pas accéder au DOM, il ne peut donc procéder à aucune mise à jour ni modification. Si vous comptez déplacer du JavaScript vers un web worker, il vous faudra un développeur qui maîtrise vraiment le sujet.

5. Utilisez le prerendering ou le rendu côté serveur (SSR)

Si vous utilisez un framework JavaScript, une quantité importante de code est nécessaire pour charger la page. Ce code peut être long à traiter dans le navigateur, provoquant des délais. En recourant au prerendering ou au SSR, vous transférez cette charge du navigateur vers le serveur.

Conclusion

Même si le FID a été remplacé par l’INP en mars 2024, il reste utile de chercher à l’améliorer. La plupart des optimisations que vous mettez en place pour améliorer le TBT et le FID amélioreront également l’INP.

Si vous avez des questions, contactez-moi sur X.