Je relis et conseille souvent cet article d’Addy Osmani de février 2019 mais mes interlocuteurs et interlocutrices ne sont pas forcément anglophones. J’ai donc décidé de le traduire.
La façon dont les navigateurs ordonnancent et exécutent les scripts peut avoir un impact sur les performances des pages web. Si des techniques comme <script defer>
, <link rel=preload>
(et d’autres) influencent le chargement des scripts, il peut également être utile de savoir comment les navigateurs les interprètent. Grâce à Kouhei Ueno, nous disposons maintenant d’un résumé actualisé de la manière dont les scripts sont ordonnancés dans Chrome.
Priorité de chargement (network/Blink) | Priorité d’exécution | Comment l’utiliser ? | |
<script> dans <head> | Moyenne/Haute | Très Haute - Interrompt l’analyse |
|
astuce <link rel=preload> +<script async> ou <script type=module async> | Moyenne/Haute | Haute - Interrompt l’analyse |
|
<script async> | La plus basse/Basse | Haute - Interrompt l’analyse | Faites attention lorsque vous utilisez NdBoris : la attributes ne sont pas cumulatifs. Un script |
<script defer> | La plus basse/Basse | Très basse - S’exécute après les <script> s en fin de <body> |
|
<script> en fin de <body> | Moyenne/Haute | Basse - Attend la fin de l’analyse | Attention, quand vous utilisez <script> à la fin de <body> et que vous pensez définir une priorité basse. Ces scripts sont ordonnancés avec une priorité Moyenne/Haute. |
<script defer> en fin de <body> | La plus basse/Basse - fin de queue | Très basse - S’exécute après les <script> s en fin de <body> |
|
<link rel=prefetch> + <script> lors d’une navigation vers la page suivante | Inactive / La plus basse | Dépend du moment et de la manière dont le script est consommé. | Des scripts très susceptibles d’apporter des fonctionnalités importantes à une page visitée ultérieurement. Exemples :
|
Note : Les priorités de chargement ne sont pas nécessairement cohérentes d’un navigateur à l’autre. Utilisez donc ces connaissances à bon escient et mesurez-les en cas de doute. Dans l’idéal, cherchez à offrir une expérience de qualité au plus grand nombre d’utilisateurs possible.
Si vous êtes un développeur ou une développeuse web et que vous vous demandez où vous pouvez voir la « Priorité de chargement », Chrome DevTools a une colonne « Priorité » optionnelle disponible dans le panneau Réseau. Cliquez avec le bouton droit de la souris sur les en-têtes de colonne et vous pourrez l’activer :
Cette synthèse des priorités ci-dessus est toujours valable en février 2019. Je souhaiterais personnellement avoir une meilleure compréhension des priorités de chargement dans d’autres navigateurs également. J’espère que cet aperçu sera utile à quelqu’un d’autre !
Merci à Kouhei, Dom Faralino, Pat Meenan, Kenji Baheux et Yoav Weiss pour leurs contributions permettant de mieux expliquer la pile réseau de Chrome.
En savoir plus
- Scheduling Scripts Intuitively and Performantly
- Chrome Resource Priorities and Scheduling
- Preload, Prefetch And Priorities in Chrome
- Priorities for rel=preload in Chrome and WebKit
[Note de Boris] Et j’ajoute mes propres articles, en français :