Optimiser les performances avec des astuces sur les ressources
À propos de l'auteur
Drew est directeur de edgeofmyseat.com, cofondateur de Notist et développeur principal du système de gestion de contenu de petite taille Perch . Auparavant, il était développeur Web…
Pour en savoir plus sur Drew …
Les navigateurs Web modernes utilisent toutes sortes de techniques pour améliorer les performances de chargement de pages en devinant le choix de l'utilisateur. peut être susceptible de faire ensuite. Le navigateur en sait toutefois peu sur notre site ou notre application dans son ensemble, et c'est souvent le développeur qui fournit les meilleures informations sur ce qu'un utilisateur est susceptible de faire.
Prenez l'exemple du contenu paginé, comme un album photo. Nous savons que si l’utilisateur regarde une photo dans un album, il a la possibilité de cliquer sur le lien "Suivant" pour afficher l’image suivante dans l’album. Cependant, le navigateur ne sait pas vraiment que de tous les liens de la page, c’est celui sur lequel l’utilisateur est le plus susceptible de cliquer. Pour un navigateur, tous ces liens ont le même poids.
Et si le navigateur pouvait savoir en quelque sorte où l’utilisateur se dirigeait et pouvait aller chercher la page suivante à l’avance, de sorte que, lorsque l’utilisateur clique sur le lien, le chargement de la page est beaucoup, Plus vite? C’est en principe ce que sont les conseils de ressources. Ils permettent au développeur de dire au navigateur ce qui est susceptible de se passer à l'avenir afin que le navigateur puisse en tenir compte dans ses choix de chargement des ressources.
Tous ces conseils de ressource sont utilisés l'attribut rel
de l'élément que vous serez familiarisé avec la recherche dans le
de vos documents HTML. Dans cet article, nous examinerons les principaux types de conseils de ressources et le moment et le lieu où nous pourrons les utiliser dans nos pages.
DNS Prefetching
Une recherche DNS est le processus utilisé pour transformer un nom de domaine convivial, tel que example.com
dans l’adresse IP conviviale pour l’ordinateur, telle que 123.54.92.4
qui est réellement nécessaire pour récupérer une ressource.
Chaque fois que vous tapez une URL dans la barre d’adresse du navigateur, suivez un lien dans une page. ou même charger une ressource telle qu'une image d'un domaine différent, le navigateur doit faire une recherche DNS pour trouver le serveur qui contient la ressource que nous avons demandée. Pour une page occupée contenant de nombreuses ressources externes (comme un site Web d'actualités contenant de nombreuses annonces et des outils de suivi), des dizaines de recherches DNS sont nécessaires par page.
Le navigateur met en cache les résultats de ces recherches, mais elles peuvent l'être. lent. Une technique d'optimisation des performances consiste à réduire le nombre de recherches DNS requises en organisant des ressources sur moins de domaines. Lorsque ce n'est pas possible, vous pouvez avertir le navigateur des domaines à rechercher avec l'indicateur de ressource dns-prefetch
.
Lorsque le navigateur rencontre cet indicateur, il peut commencer à résoudre le problème images.example.com
nom de domaine dès que possible, même s'il ne sait pas encore comment il sera utilisé. Cela permet au navigateur d’avancer et de travailler plus en parallèle, ce qui diminue le temps de chargement global.
Quand dois-je utiliser dns-prefetch
?
Utilisez dns-prefetch
lorsque votre page utilise des ressources d'un autre domaine, pour donner au navigateur une longueur d'avance. La prise en charge du navigateur est vraiment excellente mais si un navigateur ne la prend pas en charge, aucun dommage n’est causé – le prefetch n’arrive tout simplement pas.
Ne relancez aucun domaine que vous n'êtes . et si vous souhaitez pré-extraire un grand nombre de domaines, vous feriez peut-être mieux de savoir pourquoi tous ces domaines sont nécessaires et si quelque chose peut être fait pour en réduire le nombre.
Preconnecting
One Le pré-chargement DNS est précédé de connexion préalable à un serveur. L’établissement d’une connexion à un serveur hébergeant une ressource nécessite plusieurs étapes:
- une recherche DNS (comme nous venons de le dire);
- Une poignée de main TCP
Une «conversation» brève entre le navigateur et le serveur pour créer la connexion. - Négociation TLS sur des sites HTTPS
Cela vérifie que les informations de certificat sont valides et correctes pour la connexion.
Cela se produit généralement une fois par serveur et prend un temps précieux, en particulier si le serveur est très éloigné du navigateur et que la latence du réseau est élevée. (C’est là que les CDN distribués dans le monde sont vraiment utiles!) De la même manière que la prélecture DNS peut aider le navigateur à devancer le jeu avant qu’il ne voie ce qui se passe, la pré-connexion à un serveur permet de s’assurer que le navigateur accède à la partie. de la page où une ressource est nécessaire, la lenteur des travaux d’établissement de la connexion a déjà eu lieu et la ligne est ouverte et prête à l’emploi.
Quand dois-je utiliser preconnect
?
Encore une fois, la prise en charge du navigateur est forte et si un navigateur ne prend pas en charge la préconnexion, le résultat sera identique à ce qu'il était auparavant. Pensez à utiliser preconnect lorsque vous êtes certain de pouvoir accéder à une ressource et que vous souhaitez aller de l'avant.
Veillez à ne pas établir de connexion à l'avance, puis à ne pas utiliser la connexion, car cela ralentirait votre page et le bloquerait. une quantité infime de ressources sur le serveur auquel vous vous connectez également.
La pré-extraction de la page suivante
Les deux astuces que nous avons examinées jusqu'à présent sont principalement axées sur les ressources de la page en cours de chargement. Ils peuvent être utiles pour aider le navigateur à prendre de l'avance sur les images, les scripts ou les polices, par exemple. Les deux astuces suivantes concernent plus la navigation et la prévision de l’emplacement de l’utilisateur après après le chargement de la page en cours.
La première de ces astuces est le prélecture, et son tag de lien peut ressembler à ceci:
Cela indique au navigateur qu'il peut aller de l'avant et aller chercher une page en arrière-plan afin qu'elle soit prête à partir à la demande. Il y a un peu de risque ici parce que vous devez anticiper l'endroit où l'utilisateur va naviguer par la suite. Faites-le correctement et la page suivante peut sembler se charger très rapidement. Ne vous y trompez pas et vous perdez du temps et des ressources en téléchargeant quelque chose qui ne sera pas utilisé. Si l'utilisateur dispose d'une connexion mesurée, telle qu'un forfait de téléphonie mobile limité, vous risquez en fait de lui coûter de l'argent réel.
Lors d'une pré-extraction, le navigateur effectue la recherche DNS et établit la connexion au serveur que nous avons vue précédemment. deux types d’indices, mais va encore plus loin et demande et télécharge les fichiers. Cependant, il s’arrête à ce stade et les fichiers ne sont pas analysés ni exécutés et ne sont en aucun cas appliqués à la page en cours. Ils sont simplement demandés et maintenus prêts.
Vous pouvez penser à une prélecture, c'est un peu comme ajouter un fichier au cache du navigateur. Au lieu d'aller sur le serveur et de le télécharger lorsque l'utilisateur clique sur le lien, le fichier peut être extrait de la mémoire et utilisé beaucoup plus rapidement.
L'attribut en tant que
Dans l'exemple ci-dessus, vous pouvez voir que nous définissons l'attribut comme
à comme = "document"
. Ceci est un attribut facultatif qui indique à ce navigateur que ce que nous recherchons doit être traité comme un document (c'est-à-dire une page Web). Cela permet au navigateur de définir le même type d’en-têtes de demande et de politiques de sécurité que si nous venions de suivre un lien vers une nouvelle page.
Il existe de nombreuses valeurs possibles pour l’attribut que
en activant le navigateur permet de gérer correctement les différents types de prefetch.
Valeur de en tant que | Type de ressource |
---|---|
audio | Fichiers audio et musicaux |
vidéo | Vidéo |
Piste | Vidéo ou audio Pistes WebVTT |
script | fichiers JavaScript |
style | feuilles de style CSS |
police | polices de caractère Web |
image | Images |
fetch [19659039] Demandes d'API XHR et Fetch | |
travailleur | Les travailleurs Web |
incorporent | Multimédia demandes |
objet | Multimédia demandes |
document | Pages Web [19659064] Différentes valeurs pouvant être utilisées pour spécifier des types de ressources avec l'attribut en tant que . Wh fr Devrais-je utiliser |