103 Early Hints : Préchargez les ressources critiques pendant le temps de réflexion du serveur

Utilisez le temps de réflexion du serveur pour précharger votre image LCP et votre CSS critique avant que la page ne soit prête

Arjen Karel Core Web Vitals Consultant
Arjen Karel - linkedin
Last update: 2026-03-04

Les 103 Early Hints en bref

Les 103 Early Hints constituent un code d'état HTTP léger que le serveur envoie avant la réponse finale. Pendant que le serveur traite encore votre page, le navigateur peut déjà commencer à récupérer des ressources critiques comme votre image LCP ou votre feuille de style principale.

Dans mes tests, une image LCP est apparue 35 % plus rapidement avec les 103 Early Hints. L'amélioration était encore plus marquée lorsque l'en-tête incluait également des feuilles de style. Exemple de chaîne de requêtes critiques

Dernière révision par [url=https:\/\/www.linkedin.com\/in\/arjenkarel\/]Arjen Karel[\/url] en mars 2026

Que sont les 103 Early Hints ?

Les Early Hints sont un code d'état HTTP (103) envoyé avant que le serveur web n'envoie la réponse finale. Ils permettent au serveur d'indiquer au navigateur, tôt dans le processus de chargement, que certaines ressources comme une image ou une feuille de style sont critiques pour le rendu de la page.

La plupart des pages dynamiques prennent du temps à être générées. Le serveur interroge une base de données, exécute la logique de l'application et assemble le HTML. Pendant ce temps de traitement, le navigateur attend tout simplement. Les 103 Early Hints comblent cette lacune en indiquant au navigateur ce qu'il doit récupérer pendant qu'il attend la réponse réelle.

Les Early Hints remplacent le [url=https:\/\/developer.chrome.com\/blog\/removing-push]HTTP\/2 Server Push[\/url], désormais obsolète, que Chrome a supprimé dans sa version 106. Le Server Push regroupait les ressources avec la réponse finale et poussait souvent des octets que le navigateur avait déjà en cache. Les Early Hints évitent ce problème car ils ne sont que des suggestions ; le navigateur décide s'il doit y donner suite.

Prise en charge par les navigateurs

Les 103 Early Hints sont pris en charge par [url=https:\/\/caniuse.com\/mdn-http_status_103]93 % des navigateurs dans le monde[\/url] :

  • Chrome 103+ et Edge 103+ : prise en charge complète du preconnect et du preload (depuis juin 2022)
  • Firefox 123+ : prise en charge complète du preconnect et du preload (depuis février 2024)
  • Safari 17+ : preconnect uniquement. Safari ne prend pas en charge le preload dans les réponses 103

    La limitation de Safari est importante. Si votre stratégie d'Early Hints repose entièrement sur le préchargement d'images ou de polices, les utilisateurs de Safari n'en bénéficieront pas. Incluez des suggestions de preconnect aux côtés des suggestions de preload afin que Safari prépare au moins la connexion aux origines de vos ressources.

    Les Early Hints ne fonctionnent qu'avec HTTP\/2 ou HTTP\/3. Ils ne fonctionnent pas avec HTTP\/1.1, à partir d'iframes ou pour des requêtes qui ne sont pas des navigations. Le navigateur traite uniquement les suggestions pour preload et preconnect ; dns-prefetch et prefetch ne sont pas pris en charge dans les réponses 103.

    À quoi ressemblent les 103 Early Hints ?

    Lorsqu'un navigateur demande une page, le serveur renvoie immédiatement une réponse 103 avant d'avoir fini de générer le HTML. Cette réponse indique au navigateur de commencer à récupérer l'[url=\/pagespeed\/preload-largest-contentful-paint-image]image LCP[\/url] et la feuille de style :

    HTTP\/2 103 Early Hints
    Link: <\/image.webp>; rel=preload; as=image
    Link: <\/style.css>; rel=preload; as=style
                    

    Pendant ce temps, le serveur génère la page. Une fois prête, il envoie la réponse finale :

    HTTP\/2 200 OK
    Content-Length: 1234
    [le reste de la réponse]
                    

    Au moment où le navigateur reçoit la réponse 200, il a déjà commencé à télécharger l'image et la feuille de style. Cette longueur d'avance est ce qui accélère le [url=\/core-web-vitals\/largest-contentful-paint]Largest Contentful Paint[\/url].

    Comment envoyer des 103 Early Hints

    Vous avez trois options principales, de la plus simple à celle offrant le plus de contrôle.

    Cloudflare (le plus simple)

    Si vous utilisez déjà [url=\/pagespeed\/configure-cloudflare-for-passing-the-core-web-vitals]Cloudflare pour la performance[\/url], l'activation des Early Hints se fait par un simple bouton. Accédez à Speed > Settings > Content Optimization et activez Early Hints. Cette option est disponible sur toutes les offres, y compris l'offre gratuite.

    Cloudflare met en cache les en-têtes Link des réponses 200 de votre origine. Lors des requêtes suivantes, il envoie ces en-têtes mis en cache sous forme de réponse 103 avant de transmettre la requête à votre origine. Vous fournissez les suggestions en envoyant des en-têtes Link depuis votre application :

    header("Link: <\/image.webp>; rel=preload; as=image", false);
    header("Link: <\/style.css>; rel=preload; as=style", false);
                    

    NGINX (natif depuis la version 1.29.0)

    NGINX a ajouté une [url=https:\/\/blog.nginx.org\/blog\/nginx-introduces-support-103-early-hints]prise en charge native des 103 Early Hints[\/url] dans sa version 1.29.0 (juin 2025). La directive early_hints transmet les réponses 103 de votre backend au client :

    map   {
        navigate ;
    }
    
    server {
        location \/ {
            early_hints ;
            proxy_pass http:\/\/backend.example.com;
        }
    }
                    

    La carte sec-fetch-mode garantit que les suggestions ne sont envoyées que pour les requêtes de navigation via HTTP\/2 ou HTTP\/3. Votre application backend doit générer la réponse 103 ; NGINX la transmet.

    Apache (2.4.58+)

    Apache peut générer lui-même des réponses 103 en utilisant mod_http2. Activez-le avec la [url=https:\/\/httpd.apache.org\/docs\/2.4\/mod\/mod_http2.html]directive H2EarlyHints[\/url] et définissez les ressources à suggérer :

    H2EarlyHints on
    H2EarlyHint Link "<\/style.css>;rel=preload;as=style"
    H2EarlyHint Link "<\/image.webp>;rel=preload;as=image"
                    

    Contrairement à NGINX, Apache génère la réponse 103 au niveau du serveur sans que votre application n'ait besoin de la produire.

    Quand les Early Hints sont-ils utiles (et quand ne le sont-ils pas) ?

    Les 103 Early Hints sont particulièrement efficaces lorsque votre serveur met un certain temps à répondre : pages dynamiques qui interrogent des bases de données, appellent des API ou rendent des modèles. Plus le [url=\/core-web-vitals\/time-to-first-byte]Time to First Byte[\/url] est lent, plus le navigateur a de temps pour agir sur les suggestions.

    Les Early Hints apportent moins d'avantages lorsque :

    • Votre serveur répond en moins de 100 ms. Si le TTFB est déjà rapide, il n'y a pas de lacune à combler pour le navigateur. Concentrez-vous plutôt sur la [url=\/pagespeed\/core-web-vitals-guide-to-resource-prioritization]priorisation des ressources[\/url] dans votre HTML.
    • Les pages sont servies depuis le cache. Une réponse HTML entièrement mise en cache se charge si rapidement que la réponse 103 a à peine une longueur d'avance.
    • Vous suggérez trop de ressources. Suggérer plus de 10 ressources sature la connexion et peut ralentir les choses. [url=https:\/\/performance.shopify.com\/blogs\/blog\/early-hints-at-shopify]Shopify a constaté[\/url] que sur les appareils mobiles, une suggestion agressive entraînait une dégradation des performances pour le TTFB, le FCP et le LCP. Limitez-vous à 2 ou 4 ressources critiques.

      Malgré une prise en charge par 93 % des navigateurs, l'adoption reste faible. Selon le [url=https:\/\/almanac.httparchive.org\/en\/2025\/performance]Web Almanac 2025[\/url], environ 5 % seulement des sites les plus consultés utilisent les 103 Early Hints. Le principal obstacle est de savoir quelles ressources suggérer pour chaque page, ce que la plupart des CMS ne gèrent pas automatiquement.

      Comment vérifier que les Early Hints fonctionnent

      Ouvrez les DevTools de Chrome, accédez au panneau Network et rechargez la page. Cliquez sur la requête du document et vérifiez les en-têtes de réponse. Si les Early Hints fonctionnent, vous verrez un état 103 avant le 200 dans le détail du timing.

      Depuis la ligne de commande, vous pouvez vérifier avec curl :

      curl -v --http2 https:\/\/example.com 2>&1 | grep "< HTTP"
                      

      Vous devriez voir à la fois une réponse 103 et une réponse 200.

      Résultats des tests

      J'ai testé deux scénarios pour mesurer l'impact sur le [url=\/core-web-vitals\/first-contentful-paint]First Contentful Paint[\/url] et le [url=\/core-web-vitals\/largest-contentful-paint]Largest Contentful Paint[\/url].

      1. Early Hints sur l'image LCP uniquement

      L'image LCP est apparue à l'écran 35 % plus tôt avec les 103 Early Hints par rapport à un préchargement classique dans le HTML.

      HTTP\/2 103 Early Hints
      Link: <\/image.webp>; rel=preload; as=image
                      
      Préchargement uniquement
      103 Early Hints

      2. Early Hints avec une feuille de style volumineuse et l'image LCP

      L'ajout d'un fichier CSS de 85 ko aux suggestions a rendu la différence encore plus notable. Le FCP est passé de 1,8 seconde à 1,4 seconde, et le LCP de 3,2 secondes à 2,0 secondes.

      HTTP\/2 103 Early Hints
      Link: <\/image.webp>; rel=preload; as=image
      Link: <\/style.css>; rel=preload; as=style
                      
      Préchargement uniquement
      103 Early Hints

      Ces chiffres correspondent à ce que [url=https:\/\/blog.cloudflare.com\/early-hints-performance\/]Cloudflare a mesuré chez plus de 100 000 clients[\/url] : une amélioration du LCP de 6 % au 50e percentile et de 16 % au 75e percentile sur desktop. [url=https:\/\/performance.shopify.com\/blogs\/blog\/early-hints-at-shopify]Shopify a constaté une amélioration du LCP de 500 ms au p50[\/url] pendant le Black Friday et le Cyber Monday. Les gains les plus importants concernent les pages présentant des temps de réponse du serveur lents, ce qui est exactement le moment où les Early Hints ont le plus de temps pour agir.

      Early Hints et TTFB

      Il existe une nuance de mesure à connaître. Depuis Chrome 133, le timing responseStart du navigateur (utilisé par la plupart des outils pour signaler le [url=\/core-web-vitals\/time-to-first-byte]TTFB[\/url]) inclut la réponse 103. Cela signifie que votre TTFB signalé diminuera après l'activation des Early Hints, même si le temps de traitement réel de votre serveur n'a pas changé.

      Si vous avez besoin de mesurer le temps de traitement du serveur séparément, Chrome 133 a introduit un nouvel horodatage firstResponseHeadersStart qui indique quand les en-têtes finaux de la réponse 200 arrivent. Les outils de [url=https:\/\/coredash.app]Real User Monitoring[\/url] qui suivent les deux valeurs vous donnent une vision complète : le temps que les Early Hints ont fait gagner au navigateur et le temps que votre serveur a réellement mis à répondre. [include]cwv\/authorbio.html[\/include]

      [include]sidebar.html[\/include] [include]blogfooter.html[\/include]
      103 Early Hints : Préchargez les ressources critiques pendant le temps de réflexion du serveurCore Web Vitals 103 Early Hints : Préchargez les ressources critiques pendant le temps de réflexion du serveur