Mesurer les performances avec le modèle RAIL

RAIL est un modèle de performances axé sur l'utilisateur qui fournit une structure permettant de réfléchir aux performances. Le modèle décompose l'expérience utilisateur en actions clés (par exemple, appuyer, faire défiler, charger) et vous aide à définir des objectifs de performances pour chacune d'elles.

RAIL désigne quatre aspects distincts du cycle de vie des applications Web: réponse, animation, inactif et chargement. Les utilisateurs ont des attentes de performances différentes pour chacun de ces contextes. Par conséquent, les objectifs de performances sont définis en fonction du contexte et des recherches sur l'expérience utilisateur sur la façon dont les utilisateurs perçoivent les retards.

Les quatre parties du modèle de performances RAIL: réponse, animation, inactif et chargement
Les quatre parties du modèle de performances RAIL

Centré sur l'utilisateur

Faites de vos utilisateurs le point central de vos efforts en termes de performances. Le tableau ci-dessous décrit les métriques clés de la façon dont les utilisateurs perçoivent les retards de performances:

Perception des retards de performance par les utilisateurs
0 à 16 ms Les utilisateurs sont particulièrement doués pour suivre les mouvements et ils n'apprécient pas lorsque les animations ne sont pas fluides. Il perçoit les animations comme étant fluides à condition que 60 nouvelles images soient affichées chaque seconde. Cela représente 16 ms par frame, y compris le temps nécessaire au navigateur pour afficher le nouveau cadre à l'écran, ce qui laisse environ 10 ms à l'application pour produire un frame.
0 à 100 ms Répondez aux actions des utilisateurs dans ce délai et ils ont l'impression que le résultat est immédiat. Plus longtemps, et le lien entre action et réaction est rompu.
100 à 1 000 ms Dans cette fenêtre, les choses semblent faire partie d'une progression naturelle et continue des tâches. Pour la plupart des internautes, charger des pages ou changer d'affichage représente une tâche spécifique.
1 000 ms ou plus Au-delà de 1 000 millisecondes (1 seconde), les utilisateurs ne se concentrent plus sur la tâche qu'ils sont en train d'effectuer.
10 000 ms ou plus Au-delà de 10 000 millisecondes (10 secondes), les utilisateurs sont frustrés et risquent d'abandonner des tâches. Ils ne reviendront peut-être pas plus tard.

Objectifs et consignes

Dans le contexte du RAIL, les termes objectifs et directives ont une signification spécifique:

  • Objectifs : principales métriques de performances liées à l'expérience utilisateur. Par exemple, appuyez pour peindre en moins de 100 millisecondes. La perception humaine étant relativement constante, il est peu probable que ces objectifs changent de temps.

  • Consignes. Recommandations pour vous aider à atteindre vos objectifs. Celles-ci peuvent être spécifiques aux conditions matérielles et de connexion réseau actuelles, et peuvent donc changer au fil du temps.

Réponse: traiter les événements en moins de 50 ms

Objectif: Effectuer une transition déclenchée par une entrée utilisateur dans un délai de 100 ms afin que les utilisateurs aient l'impression que les interactions sont instantanées.

Consignes:

  • Pour garantir une réponse visible en 100 ms, traitez les événements d'entrée utilisateur dans un délai de 50 ms. Cela s'applique à la plupart des entrées, telles que les clics sur des boutons, l'activation/la désactivation des commandes de formulaire ou le démarrage d'animations. Cela ne s'applique pas aux déplacements tactiles ni aux défilements.

  • Bien que cela puisse sembler contre-intuitif, ce n'est pas toujours le bon appel pour répondre immédiatement à l'entrée utilisateur. Vous pouvez utiliser cette fenêtre de 100 ms pour effectuer d'autres tâches coûteuses, mais veillez à ne pas bloquer l'utilisateur. Si possible, faites le travail en arrière-plan.

  • Pour les actions qui prennent plus de 50 ms, envoyez toujours des commentaires.

50 ms ou 100 ms ?

L'objectif est de répondre aux entrées en moins de 100 ms, alors pourquoi notre budget n'est-il que de 50 ms ? En effet, d'autres tâches sont généralement effectuées en plus de la gestion des entrées, et cette tâche occupe une partie du temps disponible pour obtenir une réponse d'entrée acceptable. Si une application s'exécute dans les fragments de 50 ms recommandés pendant le temps d'inactivité, cela signifie que les entrées peuvent être mises en file d'attente jusqu'à 50 ms si elles se produisent au cours de l'un de ces fragments de tâche. Ainsi, on peut supposer que seules les 50 ms restantes sont disponibles pour le traitement réel des entrées. Cet effet est illustré dans le schéma ci-dessous, qui montre comment les entrées reçues lors d'une tâche inactive sont mises en file d'attente, ce qui réduit le temps de traitement disponible:

Diagramme illustrant comment les entrées reçues pendant une tâche inactive sont mises en file d'attente, ce qui réduit le temps de traitement des entrées disponible à 50 ms
Impact des tâches inactives sur le budget des réponses aux entrées

Animation: produit un frame en 10 ms

Objectifs:

  • Créez chaque image d'une animation en 10 ms maximum. Techniquement, le budget maximal pour chaque image est de 16 ms (1 000 ms / 60 images par seconde environ 16 ms), mais les navigateurs ont besoin d'environ 6 ms pour afficher chaque image, d'où la limite de 10 ms par image.

  • Optez pour la fluidité visuelle. Les utilisateurs s'aperçoivent lorsque la fréquence d'images varie.

Consignes:

  • Pour les points à forte pression, comme les animations, l'essentiel est de ne rien faire là où vous le pouvez, et le minimum absolu où vous ne pouvez pas. Dans la mesure du possible, utilisez la réponse de 100 ms pour précalculer les tâches coûteuses afin d'optimiser vos chances d'atteindre 60 FPS.

  • Consultez la section Performances d'affichage pour découvrir différentes stratégies d'optimisation des animations.

  • Animations visuelles, telles que les entrées et les sorties, les interpolations et les indicateurs de chargement.
  • Défilement. Cela inclut le glissement d'un geste vif, c'est-à-dire lorsque l'utilisateur commence à faire défiler l'écran, puis abandonne et continue à faire défiler la page.
  • Déplacement Les animations suivent souvent les interactions de l'utilisateur, telles que le panoramique d'une carte ou le pincement pour zoomer.

Inactif: optimiser la durée d'inactivité

Objectif: Maximiser le temps d'inactivité pour augmenter les chances que la page réponde aux entrées utilisateur dans un délai de 50 ms.

Consignes:

  • Utilisez le temps d'inactivité pour terminer les tâches différées. Par exemple, pour le chargement initial de la page, chargez le moins de données possible, puis utilisez le temps d'inactivité pour charger le reste.

  • Effectuez les tâches en cas d'inactivité en 50 ms maximum. et vous risquez d'interférer avec la capacité de l'application à répondre à l'entrée utilisateur dans un délai de 50 ms.

  • Si un utilisateur interagit avec une page pendant son travail d'inactivité, cette interaction doit toujours avoir la priorité la plus élevée et interrompre cette tâche.

Chargement: diffusez du contenu et devenez interactif en moins de 5 secondes

Lorsque les pages se chargent lentement, l'attention des utilisateurs s'éloigne, et ils perçoivent la tâche comme défectueuse. Les sites qui se chargent rapidement présentent des sessions moyennes plus longues, des taux de rebond plus faibles et une meilleure visibilité des annonces.

Objectifs:

Consignes:

Outils de mesure du RAIL

Plusieurs outils sont à votre disposition pour vous aider à automatiser vos mesures RAIL. La méthode à utiliser dépend du type d'informations dont vous avez besoin et du type de workflow que vous préférez.

Outils pour les développeurs Chrome

Les outils pour les développeurs Chrome fournissent une analyse approfondie de tout ce qui se passe pendant le chargement ou l'exécution de votre page. Consultez la section Premiers pas avec l'analyse des performances d'exécution pour vous familiariser avec l'interface utilisateur du panneau Performances.

Les fonctionnalités des outils de développement suivantes sont particulièrement pertinentes:

Phare

Lighthouse est disponible dans les outils pour les développeurs Chrome, sur PageSpeed Insights, en tant qu'extension Chrome, en tant que module Node.js et dans WebPageTest. Vous lui attribuez une URL, simule un appareil de milieu de gamme avec une connexion 3G lente, exécute une série d'audits sur la page, puis génère un rapport sur les performances de chargement, ainsi que des suggestions d'amélioration.

Les audits suivants sont particulièrement pertinents:

Response (Réponse)

Chargement

WebPageTest

WebPageTest est un outil de mesure des performances Web qui utilise de vrais navigateurs pour accéder aux pages Web et collecter des métriques temporelles. Saisissez une URL sur la page webpagetest.org/easy pour obtenir un rapport détaillé sur les performances de chargement de la page sur un véritable appareil Moto G4 dont la connexion 3G est lente. Vous pouvez également le configurer pour inclure un audit Lighthouse.

Résumé

RAIL permet de considérer l'expérience utilisateur d'un site Web comme un parcours composé d'interactions distinctes. Découvrez comment les utilisateurs perçoivent votre site afin de définir des objectifs de performances ayant le plus d'impact sur l'expérience utilisateur.

  • L'internaute avant tout

  • Répond aux entrées utilisateur en moins de 100 ms.

  • Permet d'afficher un cadre en moins de 10 ms lors d'une animation ou d'un défilement.

  • Maximiser le temps d'inactivité du thread principal.

  • Chargez du contenu interactif en moins de 5 000 ms.