Oui L'une d'elles est le prĂ©chargement de contenu dont vous aurez besoin plus tard. PrĂ©-fetching du CSS, prĂ©-rendu d'une page complĂšte ou rĂ©solution d'un nom de domaine. Nous faisons tout Ă l'avance, puis nous affichons instantanĂ©ment le rĂ©sultat ! Ăa sonne bien.
Encore mieux, c'est que c'est trĂšs simple Ă mettre en Ćuvre. Cinq balises donnent au navigateur l'ordre de procĂ©der Ă des actions anticipĂ©es :
En résumé, voici ce qu'elles font et quand les utiliser.
Passer à : · · · ·
preload
<link rel= "preload"> indique au navigateur de charger et de mettre en cache la ressource dÚs que possible (comme un script ou une feuille de style). C'est utile lorsque la ressource sera nécessaire quelques secondes aprÚs le chargement de la page - et vous souhaitez accélérer le processus.
Le navigateur ne fait rien avec la ressource aprÚs le chargement. Les scripts ne s'exécutent pas, les feuilles de style ne s'appliquent pas. La ressource est simplement mise en cache et immédiatement fournie sur demande.
Syntaxe
<link rel="preload" href="/style.css" as="style" /> href indique la ressource que vous souhaitez télécharger.
as peut ĂȘtre n'importe quoi que vous pouvez tĂ©lĂ©charger dans un navigateur :
stylepour les feuilles de style,scriptpour les scripts,fontpour les polices,fetchpour les ressources chargées viafetch()ouXMLHttpRequest,- liste complÚte sur .
Il est important d'indiquer l'attribut as â cela aide le navigateur Ă Ă©tablir les prioritĂ©s et Ă planifier le chargement correctement.
Quand utiliser
Utilisez le préchargement lorsque la ressource sera nécessaire trÚs prochainement. Par exemple :
- Polices personnalisées à partir d'un fichier externe :
/* index.css */ @font-face { src: url('comic-sans.woff2') format('woff2'); }Par défaut
comic-sans.woff2commencera à se charger seulement aprÚs le chargement et l'analyse.index.cssPour ne pas attendre si longtemps, vous pouvez charger la police plus tÎt en utilisant<link rel= "preload">:<link rel="preload" href="comic-sans.woff2" as="font" /> - Si vous divisez vos styles selon l'approche en deux parties, critiques (pour le rendu immédiat) et non critiques :
/* Styles critiques en ligne */Avec cette approche, les styles non critiques commenceront à se charger seulement lors de l'exécution de JavaScript, ce qui pourra se produire quelques secondes aprÚs le rendu. Pour éviter d'attendre JS, utilisez
<link rel= "preload">, pour commencer le chargement plus tĂŽt :/* Styles critiques en ligne */
N'abusez pas de la prĂ©charge. Si vous chargez tout sans distinction, le site ne s'accĂ©lĂ©rera pas magiquement, au contraire, cela gĂȘnera le navigateur dans sa planification efficace.
Ne confondez pas avec le préchargement. N'utilisez pas <link rel= "preload">, si vous n'avez pas besoin de la ressource immédiatement aprÚs le chargement de la page. Si elle est nécessaire plus tard, par exemple, pour la page suivante, utilisez <link rel= "prefetch">.
Détails
C'est une balise obligatoire pour l'exécution du navigateur (si elle est prise en charge), contrairement à tous les autres liens liés au préchargement. Le navigateur doit télécharger la ressource indiquée dans <link rel="preload">. Dans d'autres cas, il peut ignorer le préchargement, par exemple, s'il est sur une connexion lente.
Priorités. Aux différentes ressources (styles, scripts, polices, etc.), les navigateurs attribuent généralement des priorités différentes pour charger en premier les ressources les plus importantes. Dans ce cas, le navigateur détermine la priorité selon l'attribut as. Pour le navigateur Chrome, vous pouvez consulter .
prefetch
<link rel= "prefetch"> demande au navigateur de télécharger et de mettre en cache la ressource (par exemple, un script ou une feuille de style) en arriÚre-plan. Le téléchargement se fait avec une faible priorité, donc cela n'entrave pas les ressources plus importantes. C'est utile si la ressource sera nécessaire sur la prochaine page, et que vous souhaitez la mettre en cache à l'avance.
Ici aussi, le navigateur ne fait rien avec la ressource aprÚs le téléchargement. Les scripts ne s'exécutent pas, les feuilles de style ne sont pas appliquées. La ressource est simplement mise en cache et immédiatement disponible sur demande.
Syntaxe
<link rel="prefetch" href="/style.css" as="style" /> href indique la ressource que vous souhaitez télécharger.
as peut ĂȘtre n'importe quoi que vous pouvez tĂ©lĂ©charger dans un navigateur :
stylepour les feuilles de style,scriptpour les scripts,fontpour les polices,fetchpour les ressources chargées viafetch()ouXMLHttpRequest,- liste complÚte sur .
Il est important d'indiquer l'attribut as â cela aide le navigateur Ă correctement Ă©tablir des prioritĂ©s et Ă planifier le chargement.
Quand utiliser
Pour charger des ressources d'autres pages, si vous avez besoin de la ressource d'une autre page, et que vous souhaitez la précharger pour ensuite accélérer le rendu de cette page. Par exemple :
- Vous avez un site e-commerce, et 40 % des utilisateurs quittent la page d'accueil pour la page produit. Utilisez
<link rel= "prefetch">, en chargeant les fichiers CSS et JS pour le rendu des pages avec le produit. - Vous avez une application monopage, et différentes pages chargent différents paquets. Lorsque l'utilisateur visite une page, il est possible de précharger les paquets pour toutes les pages auxquelles elle fait référence.
Il est probable que cette balise puisse ĂȘtre utilisĂ©e sans danger en grande quantitĂ©.. Les navigateurs prĂ©voient gĂ©nĂ©ralement le prĂ©chargement avec une prioritĂ© minimale, donc cela n'incommode personne. Gardez simplement Ă l'esprit que cela utilise le trafic de l'utilisateur, ce qui peut avoir un coĂ»t.
Pas pour les requĂȘtes urgentes.. N'utilisez pas <link rel= "prefetch">, lorsque la ressource sera nĂ©cessaire dans quelques secondes. Dans ce cas, utilisez. <link rel= "preload">.
Détails
Balise optionnelle.. Le navigateur n'est pas obligé de suivre cette instruction, il peut l'ignorer, par exemple, sur une connexion lente.
Priorité dans Chrome.. Dans Chrome. <link rel= "prefetch"> est généralement executé avec une priorité minimale (voir. ), c'est-à -dire aprÚs le chargement de tout le reste.
preconnect
<link rel= "preconnect"> demande au navigateur de se connecter à l'avance au domaine, lorsque vous souhaitez accélérer l'établissement de la connexion dans le futur.
Le navigateur doit établir une connexion s'il extrait des ressources d'un nouveau domaine tiers. Par exemple, s'il charge des polices Google Fonts, React à partir de CDN ou demande une réponse JSON à partir du serveur API.
Ătablir une nouvelle connexion prend gĂ©nĂ©ralement quelques centaines de millisecondes. Cela ne se produit qu'une seule fois, mais cela prend quand mĂȘme du temps. Si vous avez Ă©tabli la connexion Ă l'avance, vous Ă©conomiserez du temps et chargerez plus rapidement les ressources de ce domaine.
Syntaxe
<link rel= "preconnect" href="https://api.my-app.com" /> href indique le nom de domaine pour lequel il faut dĂ©terminer l'adresse IP. Cela peut ĂȘtre spĂ©cifiĂ© avec un prĂ©fixe (https://domain.com) ou sans (//domain.com).
Quand utiliser
Utilisez-le pour les domaines qui seront bientÎt nécessaires. pour charger un style, un script ou une image importants depuis là -bas, mais vous ne connaissez pas encore l'URL de la ressource. Par exemple :
- Votre application est hébergée sur
my-app.comet effectue des requĂȘtes AJAX versapi.my-app.com: vous ne connaissez pas Ă l'avance les requĂȘtes spĂ©cifiques car elles sont effectuĂ©es dynamiquement depuis JS. Ici, l'utilisation de la balise pour la prĂ©connexion au domaine est tout Ă fait appropriĂ©e. - Votre application est hĂ©bergĂ©e sur
my-app.comet utilise les polices Google Fonts. Elles sont chargées en deux étapes : d'abord, le fichier CSS est chargé depuis le domainefonts.googleapis.com, puis ce fichier demande les polices depuisfonts.gstatic.com. Vous ne pouvez pas savoir quels fichiers de polices spécifiques proviennent defonts.gstatic.comvous aurez besoin d'établir une connexion préalable avant de charger le fichier CSS, donc nous pouvons seulement établir une connexion préliminaire à l'avance.
Utilisez cette balise pour accélérer légÚrement un script ou un style tiers. grùce à l'établissement préalable de la connexion.
Ne pas abuser de. Ătablir et maintenir une connexion est une opĂ©ration coĂ»teuse tant pour le client que pour le serveur. Utilisez cette balise au maximum pour 4 Ă 6 domaines.
Détails
Balise optionnelle.. Le navigateur n'est pas obligé de suivre cette instruction et peut l'ignorer, par exemple, s'il a déjà établi de nombreuses connexions ou dans d'autres cas.
Ce que comprend le processus de connexion. Pour se connecter Ă chaque site, le navigateur doit effectuer les actions suivantes :
- Résolution DNS. Trouver l'adresse IP du serveur (
216.58.215.78) pour le nom de domaine spĂ©cifiĂ© (google.com). - Handshake TCP. Ăchange de paquets (client â serveur â client) pour initier une connexion TCP avec le serveur.
- Handshake TLS (uniquement pour les sites HTTPS). Deux tours d'Ă©change de paquets (client â serveur â client â serveur â client) pour initier une session sĂ©curisĂ©e TLS.
Remarque : HTTP/3 améliorera et accélérera le mécanisme de handshake, mais il est encore loin.
dns-prefetch
<link rel= "dns-prefetch"> demande au navigateur de résoudre à l'avance le DNS pour le domaine si vous allez vous y connecter prochainement et que vous souhaitez accélérer la connexion initiale.
Le navigateur doit déterminer l'adresse IP du domaine s'il extrait des ressources d'un nouveau domaine tiers. Par exemple, télécharger des polices Google Fonts, React à partir d'un CDN ou demander une réponse JSON d'un serveur API.
Pour chaque nouveau domaine, la rĂ©solution d'enregistrement DNS prend gĂ©nĂ©ralement environ 20 Ă 120 ms. Cela n'affecte que le chargement de la premiĂšre ressource de ce domaine, mais reprĂ©sente tout de mĂȘme un dĂ©lai. Si nous effectuons la rĂ©solution DNS Ă l'avance, nous Ă©conomiserons du temps et chargerons la ressource plus rapidement.
Syntaxe
<link rel= "dns-prefetch" href="https://api.my-app.com" /> href indique le nom de domaine pour lequel l'adresse IP doit ĂȘtre Ă©tablie. On peut indiquer avec le prĂ©fixe (https://domain.com) ou sans (//domain.com).
Quand utiliser
Utilisez-le pour les domaines qui seront bientÎt nécessaires. pour charger des ressources à partir de là que le navigateur ne connaßt pas à l'avance. Par exemple :
- Votre application est hébergée sur
my-app.comet effectue des requĂȘtes AJAX versapi.my-app.com: vous ne connaissez pas Ă l'avance les requĂȘtes spĂ©cifiques car elles sont effectuĂ©es dynamiquement depuis JS. Ici, l'utilisation de la balise pour la prĂ©connexion au domaine est tout Ă fait appropriĂ©e. - Votre application est hĂ©bergĂ©e sur
my-app.com, et utilise les polices Google Fonts. Elles sont chargées en deux étapes : d'abord le fichier CSS est chargé à partir du domainefonts.googleapis.com, puis ce fichier demande les polices depuisfonts.gstatic.com. Vous ne pouvez pas savoir quels fichiers de polices spécifiques proviennent defonts.gstatic.comvous aurez besoin d'établir une connexion préalable avant de charger le fichier CSS, donc nous pouvons seulement établir une connexion préliminaire à l'avance.
Utilisez cette balise pour accélérer légÚrement un script ou un style tiers. grùce à l'établissement préalable de la connexion.
Notez les caractéristiques similaires sur
<link rel= "dns-prefetch"/>et<link rel= "preconnect">. Utiliser ces Ă©lĂ©ments ensemble pour un mĂȘme domaine n'a gĂ©nĂ©ralement pas de sens :<link rel= "preconnect">inclut dĂ©jĂ<link rel= "dns-prefetch"/>et bien d'autres. Cela peut ĂȘtre justifiĂ© dans deux cas :
- Vous souhaitez prendre en charge les anciens navigateurs.
<link rel= "dns-prefetch" />est pris en charge .<link rel= "preconnect">a été supporté pendant un certain temps dans Chrome et Firefox, mais n'a été ajouté dans Safari qu'à partir de 11.1 et . Si vous devez prendre en charge ces navigateurs, utilisez<link rel= "dns-prefetch" />comme alternative pour<link rel= "preconnect">.- Vous souhaitez accélérer la connexion à plus de 4 à 6 domaines. La balise
<link rel= "preconnect">n'est pas recommandée pour plus de 4 à 6 domaines, car l'établissement et la maintenance de la connexion sont des opérations coûteuses.<link rel= "dns-prefetch" />consomme moins de ressources, donc en cas de besoin, utilisez-le.
Détails
Balise optionnelle.. Le navigateur n'est pas obligé de suivre cette instruction, il peut donc ne pas effectuer la résolution DNS, par exemple s'il y a trop de balises de ce type sur la page ou dans d'autres cas.
Qu'est-ce que le DNS. Chaque serveur sur Internet a une adresse IP unique qui ressemble à 216.58.215.78. Dans la barre d'adresse du navigateur, le nom du site est généralement saisi (par exemple, google.com), et les serveurs DNS (Domain Name System) l'associent à l'adresse IP du serveur (216.58.215.78).
Pour dĂ©terminer l'adresse IP, le navigateur doit effectuer une requĂȘte au serveur DNS. Cela prend 20 Ă 120 ms lors de la connexion Ă un nouveau domaine externe.
Le DNS est mis en cache, mĂȘme si ce n'est pas trĂšs fiable. Certains systĂšmes d'exploitation et navigateurs mettent en cache les requĂȘtes DNS : cela fait gagner du temps lors des requĂȘtes rĂ©itĂ©rĂ©es, mais on ne peut pas compter sur le cache. Sous Linux, cela ne fonctionne gĂ©nĂ©ralement pas du tout. Chrome a un cache DNS, mais il ne dure qu'une minute. Windows met en cache les rĂ©ponses DNS pendant cinq jours.
prerender
<link rel= "prerender"> demande au navigateur de charger l'URL et de l'afficher dans un onglet invisible. Lorsque l'utilisateur clique sur le lien, la page doit s'afficher immĂ©diatement. C'est utile si vous ĂȘtes sĂ»r que l'utilisateur visitera une certaine page et que vous souhaitez accĂ©lĂ©rer son affichage.
Malgré l'efficacité exceptionnelle de cette balise (ou à cause de celle-ci), en 2019 <link rel= "prerender"> est mal supportée par les navigateurs principaux. Pour plus de détails, voir .
Syntaxe
<link rel="prerender" href="https://my-app.com/pricing" /> href indique l'URL pour laquelle vous souhaitez lancer le rendu en arriĂšre-plan.
Quand utiliser
Lorsque vous ĂȘtes vraiment sĂ»r que l'utilisateur se rendra sur une certaine page. Si vous avez un « tunnel » oĂč 70 % des visiteurs de la page A passent Ă la page B, alors <link rel= "prerender"> la page A affichera trĂšs rapidement la page B.
Ne pas abuser de. Le rendu prĂ©liminaire est extrĂȘmement coĂ»teux en termes de trafic et de mĂ©moire. Ne l'utilisez pas <link rel= "prerender"> pour plus d'une seule page.
Détails
Balise optionnelle.. Le navigateur n'est pas obligé de suivre cette instruction et peut l'ignorer, par exemple, sur une connexion lente ou en cas de faible mémoire disponible.
Pour économiser de la mémoire, Chrome ne réalise pas un rendu complet, et . Cela signifie que Chrome charge la page et toutes ses ressources, mais ne fait pas de rendu et n'exécute pas JavaScript.
Firefox et Safari ne prennent pas du tout en charge cette balise. Cela ne viole pas la spĂ©cification, car les navigateurs ne sont pas tenus de suivre cette instruction ; mais c'est tout de mĂȘme dommage. dans Firefox a Ă©tĂ© dĂ©couvert pendant sept ans. Des rapports indiquent que Safari .
Résumé
Utilisez :
<link rel= "preload"> â lorsque vous aurez besoin d'une ressource dans quelques secondes<link rel= "prefetch"> â lorsque vous aurez besoin d'une ressource sur la page suivante<link rel= "preconnect"> â lorsque vous savez que vous aurez bientĂŽt besoin d'une ressource, mais que vous ne connaissez pas encore son URL complĂšte<link rel= "dns-prefetch"> â de mĂȘme, lorsque vous savez que vous aurez bientĂŽt besoin d'une ressource, mais que vous ne connaissez pas encore son URL complĂšte (pour les anciens navigateurs)<link rel= "prerender"> â lorsque vous ĂȘtes sĂ»r que les utilisateurs vont se rendre sur une certaine page et que vous souhaitez accĂ©lĂ©rer son affichage.
Source : habr.com
