Guide : Resource Hints

Comment preload, preconnect, dns-prefetch, et prefetch resource hints speed up page charge et améliorer Core Web Vitals, et quand à utiliser chaque un.

Première publication : 2 juil. 2026 · Dernière mise à jour : 3 août 2026 · Avancé

Resource hints (dns-prefetch, preconnect, preload, prefetch) tell le navigateur à faire network fonctionner — DNS lookups, connection setup, or fetching — précédent que il sinon voudrait. dns-prefetch est cheapest (DNS seulement); preconnect fait le complet DNS+TCP+TLS handshake; preload est a mandatory récupérer pour a late-discovered resource le actuel page nécessite (comme an LCP image or a font dans CSS) — mais son par défaut priority encore dépend on le resource type, pas automatiquement "élevé" (fetchpriority est a séparé hint pour que); prefetch est a faible-priority speculative récupérer pour a future page. Le big échec mode est overuse — preload tout et vous avez prioritized rien. Et être honest à propos de SEO: per Gary Illyes (Feb 2026), ces hints ne pas aider Googlebot explorer or indexer faster; leur valeur est entirely on le real-utilisateur side, qui flows dans Core Web Vitals, un de plusieurs signaux Google's classement systèmes utiliser — bon scores ne pas guarantee top rankings.

TL;DR — Le principal resource hints formulaire a spectrum de navigateur coût: dns-prefetch (DNS lookup seulement) → preconnect (DNS + TCP + TLS) → preload (a mandatory récupérer de a spécifique, late-discovered resource) → prefetch (lowest-priority speculative récupérer pour a future navigation). modulepreload est preload’s sibling pour JS modules. preload est le seulement un le navigateur est obligated à récupérer — c’est différent depuis saying c’est automatiquement élevé priority; par défaut priority encore dépend on le resource type, et fetchpriority est a séparé hint pour raising il. Le as attribut est requis on preload; crossorigin est requis pour fonts et autre anonymous-mode récupère, or le navigateur downloads le resource twice. Overuse est le dominant échec mode. Et per Gary Illyes (Feb 2026), none de ce aide Googlebot — le SEO valeur est entirely indirect, via Core Web Vitals, qui est un de plusieurs classement signaux, pas a deterministic un.

Preuve à l’appui de cette affirmation Preload declares a resource needed for the current navigation and fetches it with the resource's destination semantics. Portée : Current official or standards documentation. Niveau de confiance : élevé · Vérifié : MDN: preload Preuve à l’appui de cette affirmation Preconnect asks the browser to establish an early connection to an origin and should be limited to important origins. Portée : Current official or standards documentation. Niveau de confiance : élevé · Vérifié : MDN: preconnect

A spectrum of navigateur “cost”

Le cleanest mental model pour resource hints est à line les up par comment beaucoup fonctionner vous êtes asking le navigateur à faire up front:

  1. dns-prefetch — resolve a hostname à an IP. Cheapest.
  2. preconnect — DNS lookup plus le TCP handshake plus TLS negotiation pour HTTPS. A complet ouvrir connection, ready à utiliser.
  3. preload — go en réalité récupérer a spécifique resource, maintenant. Le navigateur doit traiter le récupérer, mais que ne fait pas automatiquement faire il élevé priority — plus on que ci-dessous.
  4. modulepreload — preload’s sibling pour JavaScript modules; récupère le module dans le navigateur’s module map en utilisant module-script règles plutôt que a générique récupérer.
  5. prefetch — go récupérer a spécifique resource, mais à le lowest priority, pour une page le utilisateur hasn’t navigated à yet.

Ils go dans un de deux places: a <link> element dans le <head>, or an HTTP Link réponse header (plus on le header chemin, et 103 Early Hints, ci-dessous). None de ce est le document-level Speculation Règles API — c’est a séparé mechanism pour prerendering/prefetching entier navigations, covered dans le prefetch section ci-dessous.

dns-prefetch

dns-prefetch performs simplement le DNS lookup pour a cross-origin serveur ahead de temps — il ne fait pas ouvrir a connection. Que rend il le cheapest hint et a sensible par défaut pour le nombreux lower-priority tiers domains une page touches (analytics, balise managers, minor widgets). Dans mon propre Plus grand affichage de contenu guide Je faire le practical point que “DNS-prefetch a meilleur prise en charge que preconnect” — donc c’est aussi a reasonable fallback pour navigateurs où preconnect n’est pas honored.

<link rel="dns-prefetch" href="https://analytics.example.com">

preconnect

preconnect goes plus loin: il opens le entier connection — DNS, TCP, et (pour HTTPS) le TLS handshake — donc que par le temps le navigateur nécessite le resource, le pipe est déjà warm. c’est a bigger win que dns-prefetch, mais c’est aussi plus expensive à le navigateur, qui est pourquoi il comes avec deux important caveats:

  • Reserve il pour votre la plupart critical cross-origin connections. A handful (votre font host, votre image CDN, a critical script origin) — pas tout. Google’s Lighthouse “Preconnect to required origins” audit et web.dev les deux warn que unnecessary preconnects delay autre important fonctionner.
  • An unused connection est wasted fonctionner. Navigateurs fermer a connection que n’est pas utilisé dans à propos de 10 seconds, donc a preconnect à quelque chose vous ne pas en réalité récupérer soon simplement burns handshake capacity pour rien.

Pour fonts, preconnect nécessite le crossorigin attribut — fonts sont toujours récupéré dans anonymous (CORS) mode, et sans il le navigateur opens a deuxième connection anyway, defeating le point.

<link rel="preconnect" href="https://fonts.example.com" crossorigin>

preload

«preload is the one the browser is obligated to execute — if it processes the tag, it must start the fetch for a resource the current page definitely needs but would otherwise discover late. That’s a statement about when the fetch starts, not automatically about priority: the default priority a preloaded resource gets still depends on the resource type and the browser (web.dev is explicit that images, for example, stay low priority by default even when preloaded). If you want to actually raise a resource’s priority, that’s a separate, explicit hint — fetchpriority — not something preload does on its own. The classic candidates for preload: » (Traduction) (Résumé en français de la section trente et un, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)

  • Fonts referenced à l’intérieur a CSS fichier — le navigateur ne fait pas know le font exists jusqu’à il downloads et parses le CSS, donc preload surfaces il précédent.
  • Le LCP (hero) image, surtout un définir via CSS or srcset que n’est pas a plain early <img> dans le HTML.
  • Critical, late-discovered JavaScript or CSS.

Two attributes faire or break it:

  • as est requis. Il indique le navigateur ce que type de resource ce est donc il peut assign le correct priority et match le cache entry. Omit il et le navigateur treats la requête comme a générique XHR — incorrect priority, et souvent a duplicate download.
  • crossorigin pour fonts — même règle as preconnect; miss il et le font downloads twice.

Plus généralement, a preload seulement obtient reused si le eventual requête matches il: même URL, même as/destination, le même type or media condition, matching crossorigin/credentials mode, et — où ils appliquer — matching integrity et referrerpolicy. Pour a responsive image preload, que aussi signifie en utilisant imagesrcset/imagesizes que mirror le srcset/sizes le navigateur voudrait en réalité pick, pas a unique unconditional fallback URL. Obtenir quelconque de ces out de sync et le navigateur soit ne peut pas reuse le preload (duplicate récupérer) or récupère le incorrect candidate.

«For the LCP image specifically, Google’s current recommendation is to pair preload with fetchpriority="high" so the fetch starts alongside the stylesheet. This is the combo I describe in my LCP guide too — fetchpriority="high" gets the image earliest, and preloading is a strong second signal, useful because as I note there, “Early Hints don’t work on all browsers, so you may also want to preload the image.” » (Traduction) (Résumé en français de la section trente-six, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)

<!-- LCP image -->
<link rel="preload" fetchpriority="high" as="image" href="/hero.webp" type="image/webp">

<!-- Font in CSS -->
<link rel="preload" as="font" type="font/woff2" href="/fonts/inter.woff2" crossorigin>

Le overuse warning s’applique hardest ici: si tout est preloaded à élevé priority, effectively rien est. web.dev est explicit que excessive preloads causer bandwidth contention, et il hits hardest on lent networks. Preload le deux or three genuinely late-discovered, genuinely critical resources — aucun plus.

modulepreload

modulepreload est preload’s counterpart pour JavaScript modules. Au lieu de a générique resource récupérer, il utilise module-script récupérer règles et puts le résultat straight dans le navigateur’s module map — donc quand le module est plus tard imported, le navigateur déjà a il. Selon le navigateur, il peut aussi go ahead et récupérer le module’s static imports. Prise en charge et comment deep que dependency-fetching goes les deux vary par navigateur, donc tester le réel behavior plutôt que assuming il matches preload.

<link rel="modulepreload" href="/js/app.module.js">

prefetch

prefetch est le odd un out: c’est pas à propos de le actuel page à tout. c’est a faible-priority, speculative récupérer pour a resource a future navigation va probable besoin — le suivant étape dans a checkout, le article a utilisateur est à propos de à click. Parce que il exécute à le lowest priority, il ne fait pas steal bandwidth depuis le actuel page’s critical resources, et prefetched fichiers land dans le HTTP cache (si ils sont cacheable) ready pour le suivant navigation.

Le trade-off: si le utilisateur jamais goes là, vous avez spent bytes pour rien — donc appliquer il thoughtfully et éviter il on lent or metered connections.

<link rel="prefetch" href="/checkout/step-2" as="document">

Looking forward, le Speculation Règles API est le modern successor à prefetch pour predicting même-site navigations; web.dev notes il handles cas plain prefetch ne peut pas (comme non-cacheable navigations) et behaves plus consistently à travers origins. prefetch remains utile et plus broadly pris en charge dans le meantime.

«## Preload vs. prefetch vs. preconnect vs. dns-prefetch » (Traduction) (Résumé en français de la section quarante-sept, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)

«| Hint | What it does | Priority | Browser must obey? | Best for | | --- | --- | --- | --- | --- | | dns-prefetch | DNS lookup only | — | Suggestion | Many lower-priority third-party domains | | preconnect | DNS + TCP + TLS (full connection) | — | Suggestion | Your few most critical cross-origin origins | | preload | Fetch a specific resource | Resource/browser-dependent — not automatically high; pair with fetchpriority to raise it | Yes, if processed | Late-discovered critical resources on this page | | modulepreload | Fetch a JS module into the module map | Resource/browser-dependent | Yes, if processed | Late-discovered ES modules this page needs | | prefetch | Fetch a specific resource, lowest priority | Lowest | Suggestion | Resources for a likely future navigation | » (Traduction) (Résumé en français de la section quarante-huit, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)

«## Resource hints and Core Web Vitals » (Traduction) (Résumé en français de la section quarante-neuf, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)

«Here’s the part SEOs actually care about — which hint moves which metric: » (Traduction) (Résumé en français de la section cinquante, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)

«- dns-prefetch / preconnect shave connection latency, which shows up as a faster start to loading your critical resources — feeding LCP and, before it, FCP. » (Traduction) (Résumé en français de la section cinquante et un, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.) «- preload acts on LCP and FCP most directly by starting the fetch of the LCP image or a render-critical font/stylesheet earlier. » (Traduction) (Résumé en français de la section cinquante et un, sous-partie deux : le texte source est conservé pour vérification lors de la relecture francophone.) «- prefetch doesn’t touch the current page’s Core Web Vitals at all — it improves the next page’s LCP/FCP by having its resources already cached. » (Traduction) (Résumé en français de la section cinquante et un, sous-partie trois : le texte source est conservé pour vérification lors de la relecture francophone.)

None de ces directement affecter INP or CLS, though getting fonts dans précédent (via preload) peut indirectly reduce layout shift depuis font swaps — c’est vraiment a font chargement topic, et ressources qui bloquent le rendu est le sibling article on le récupérer-order side de le même problème.

Do resource hints aider Google explorer or index my site?

Aucun — et ce est le unique la plupart important nuance à obtenir correct, parce que la plupart contenu on ce topic est vague à propos de il.

Dans a February 2026 Recherche Off le Record episode, Google’s Gary Illyes explained pourquoi Googlebot largely ignores ces hints: ils solve navigateur et network latency problèmes que Google’s propre exploration infrastructure ne fait pas ont. As reported par Moteur de recherche Journal, Illyes said “c’est very utile si vous ont comme a crappy internet à faire DNS Prefetching Par exemple. Dans notre cas, nous ne pas besoin à parce que nous peut talk very rapide à tout le cascading DNS serveurs.” Jump à citation Il fait le même point à propos de preload — “Même avec preload. Si nous ne sont pas synchronous alors nous ne pas particularly besoin à regarder à preload.” Jump à citation

Donc le correct causal chain est: resource hints → faster real-expérience utilisateur → meilleur Core Web Vitals → un de plusieurs signaux Google’s classement systèmes utiliser. Google’s propre page experience documentation est explicit que il y a aucun unique page-experience signal, que Core Web Vitals sont utilisé par classement systèmes alongside others, et que bon CWV scores ne pas guarantee a top classement — pertinence encore wins over page experience. Donc c’est pas rien — mais resource hints sont a UX/performances tactic premier, et leur SEO valeur est entirely downstream et non-deterministic. ne pas sell les internally as “ce aide Google lire lune page.”

Bing, pour ce que it’s worth, has publié aucun hint-specific guidance at tout — its webmaster guidance références site speed generically. Le navigateur-level benefits (faster loads, meilleur vitals) appliquer the même regardless of moteur de recherche, so there’s aucun separate “Bing angle” to optimize pour ici.

Delivering hints over HTTP: le Lien header et 103 Early Hints

Resource hints ne pas ont à actif dans votre HTML. Vous pouvez send les as an HTTP Link réponse header — Link: </hero.webp>; rel=preload; as=image — qui est comment serveur- et CDN-level implementations fonctionner. Le la plupart interesting version de ce est 103 Early Hints: a preliminary HTTP status que lets an edge (comme Cloudflare) send mis en cache preload/preconnect Link headers avant le origin serveur a même finished generating le complet réponse — giving le navigateur a head commencer on connections et récupère pendant que il waits. Je cover le 103 status itself dans mon Code d’état HTTPs guide, où Je décrire il as letting vous preload resources à aider LCP pour Core Web Vitals.

Erreurs fréquentes

«- Preloading too many resources — the cardinal sin; it creates bandwidth contention and can make the page slower overall. » (Traduction) (Résumé en français de la section soixante et un, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.) «- Preloading things the browser already finds early — an early <img> in the HTML doesn’t need preloading; you’re just spending a request slot. » (Traduction) (Résumé en français de la section soixante et un, sous-partie deux : le texte source est conservé pour vérification lors de la relecture francophone.) «- Missing as on preload — wrong priority and often a double download. » (Traduction) (Résumé en français de la section soixante et un, sous-partie trois : le texte source est conservé pour vérification lors de la relecture francophone.) «- Missing crossorigin on font preload/preconnect — a mismatched cache entry means the font downloads twice. » (Traduction) (Résumé en français de la section soixante et un, sous-partie quatre : le texte source est conservé pour vérification lors de la relecture francophone.) «- Stale, unused preconnect tags — left behind after you removed the third-party script they were for, holding connections open for 10 seconds before the browser gives up. » (Traduction) (Résumé en français de la section soixante et un, sous-partie cinq : le texte source est conservé pour vérification lors de la relecture francophone.) «- Ignoring the cost beyond your own page — unused hints don’t just waste your own bandwidth; they consume sockets and server/third-party capacity, and dns-prefetch/preconnect can reveal likely destinations to network observers. Browsers may also ignore, cancel, or limit hints under Save-Data, low-power, or support constraints — prefetch in particular is treated as optional and skipped for reduced-data users, so don’t assume a hint you shipped is actually running for every visitor.

Preuve à l’appui de cette affirmation Unused preconnects and fetch hints can consume sockets, bandwidth, CPU, memory and server/third-party capacity, reveal likely destinations or trigger privacy-sensitive network activity; browsers may ignore, cancel or limit hints under settings, support or data-saving constraints. Portée : future-resource speculation Niveau de confiance : élevé · Vérifié : Prefetching, prerendering, and service worker precaching

» (Traduction) (Résumé en français de la section soixante et un, sous-partie six : le texte source est conservé pour vérification lors de la relecture francophone.)

«## How to test and audit » (Traduction) (Résumé en français de la section soixante-deux, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)

«- Lighthouse / PageSpeed Insights — the “Preconnect to required origins” audit flags missing preconnects on key requests; treat it as a prompt to add a targeted one, not to carpet-bomb. » (Traduction) (Résumé en français de la section soixante-trois, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.) «- Chrome DevTools → Network panel — the Priority column shows what the browser actually prioritized, and you can spot preloaded resources fetching twice (the as/crossorigin bugs). » (Traduction) (Résumé en français de la section soixante-trois, sous-partie deux : le texte source est conservé pour vérification lors de la relecture francophone.) «- Check for unused preconnects — if a preconnected origin never appears as an actual request, remove the hint. » (Traduction) (Résumé en français de la section soixante-trois, sous-partie trois : le texte source est conservé pour vérification lors de la relecture francophone.)

«For the metrics these all feed, see Core Web Vitals and Largest Contentful Paint; the web performance tools article covers the measurement stack in depth. » (Traduction) (Résumé en français de la section soixante-quatre, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)

Ajouter une note d’expert

Épingler une citation d’expert

Nouvelle personne ? Créez son profil non revendiqué à /admin/experts/ → Épingler une citation d’expert d’abord.