ONDEV Logo

Expert en acquisition client digitale. Création de sites web et applications sur-mesure qui convertissent.

Services
  • Création de Sites Web
  • Applications Sur-Mesure
  • Publicité Digitale
  • Référencement SEO
  • Développeur Web Marseille
  • Création de Logo
  • Design UX/UI
  • Refonte d'Application
  • Maintenance Applicative
  • Audit de Code
  • Agence Vibe Coding
  • Logiciel Métier Sur-Mesure
  • Agence No Code
  • Portail Client & Extranet
  • Intranet Sur-Mesure
  • Refonte Site WordPress
  • Migration Angular vers React
Navigation
  • Accueil
  • Agence web à Marseille
  • Réalisations
  • Expertise
  • Qui sommes-nous
  • Blog
  • Contact
Guides
  • Nos guides
  • Comment créer un site internet
  • Pourquoi créer un site internet
  • Coût d'un site internet
  • Choisir son prestataire web
Contact

Mathieu Rabissoni

06 01 37 20 21WhatsAppmathieu@ondev.fr

Marseille, France

Suivez-nous

LinkedInInstagramFacebook
Zones d'intervention
Marseille|Aix-en-Provence|Aubagne|La Ciotat|Cassis|Allauch|Gardanne|Marignane|Vitrolles|Toutes nos zones

© 2026 ONDEV. Tous droits réservés.

Mentions légalesPolitique de confidentialitéPlan du site
ONDEV Logo
Réalisations
Contact
On en discute

Expertise

Création de Sites WebSite Vitrine MarseilleSite E-Commerce MarseilleRéférencement SEOOptimisation GEOApplications Web & MobileAgence CommunicationPublicité en LigneDéveloppeur Web Marseille
Réalisations

Ressources

Qui sommes-nous ?BlogGuides
Contact
AppelerWhatsApp
On en discute
  1. Accueil
  2. Blog
  3. Cache navigateur : accélérer son site
Développement
24 octobre 202612 mn

Cache navigateur : accélérer son site

Cache-Control, ETag, cache CDN, Next.js et Vercel : comment régler le cache navigateur pour un site instantané qui se met à jour partout.

Mathieu Rabissoni

Mathieu Rabissoni

Expert Acquisition Client Digitale

Cache navigateur : accélérer son site
Cache navigateur : accélérer son site

Sommaire

01.Votre site retélécharge son logo à chaque visite ? Le cache navigateur est mal réglé02.Qu'est-ce que le cache navigateur ?03.Ce qui se passe à la seconde visite04.Cache-Control, ETag, Last-Modified : les trois en-têtes à comprendre05.Cache-Control : la durée de vie06.ETag et Last-Modified : la revalidation07.Expires et l'heuristique par défaut08.Cache navigateur vs cache CDN : deux couches, pas une09.Comment Next.js et Vercel gèrent le cache10.Les assets immuables avec hash11.Les pages HTML : revalidation côté navigateur, ISR côté CDN12.Les erreurs classiques et comment les corriger13.Erreur 1 : le site ne se met pas à jour chez le client14.Erreur 2 : aucun cache du tout15.Erreur 3 : mettre en cache ce qui ne doit pas l'être16.Erreur 4 : confondre vider le cache navigateur et purger le CDN17.Vérifier le cache dans les outils du navigateur18.FAQ : cache navigateur19.Un site rapide à la première visite, instantané à la seconde

Votre site retélécharge son logo à chaque visite ? Le cache navigateur est mal réglé

Un visiteur qui revient sur votre site le lendemain ne devrait pas retélécharger votre logo, vos polices et vos scripts. Pourtant, sur une grande partie des sites vitrines que nous auditons, chaque page coûte autant à la dixième visite qu'à la première. À l'inverse, d'autres sites gardent tout en cache si longtemps que le client ne voit jamais les nouveaux tarifs. Dans les deux cas, la cause est la même : des en-têtes de cache posés au hasard, ou jamais posés.

Dans cet article, vous allez découvrir :

  • •Ce que votre navigateur garde en mémoire, et pourquoi une seconde visite devrait être quasi instantanée
  • •Les en-têtes Cache-Control, ETag et Last-Modified expliqués simplement, avec les valeurs à utiliser selon le fichier
  • •La différence concrète entre cache navigateur et cache CDN, et pourquoi il vous faut les deux
  • •Comment Next.js et Vercel règlent tout ça à votre place (assets hashés, ISR) : la mécanique derrière le Lighthouse 100 de Sudparebrise
  • •Les erreurs qui bloquent les mises à jour chez vos clients, et la vérification en deux minutes dans Chrome
Un bon cache ne fait pas gagner des millisecondes : il supprime des requêtes entières.

Qu'est-ce que le cache navigateur ?

Le cache navigateur est un espace de stockage local, sur l'appareil du visiteur, dans lequel Chrome, Safari ou Firefox conservent une copie des fichiers déjà téléchargés (images, CSS, JavaScript, polices, parfois pages HTML) pour les réutiliser sans les redemander au serveur. Son objectif : éviter un aller-retour réseau pour un fichier qui n'a pas changé.

Chaque fichier mis en cache est accompagné de règles envoyées par le serveur : combien de temps la copie reste valable, et comment vérifier si elle est toujours à jour. Sans ces règles, le navigateur improvise, et c'est rarement ce que vous voulez.

Ce qui se passe à la seconde visite

Quand une page demande un fichier, le navigateur regarde d'abord dans son cache. Trois scénarios sont possibles :

  • •Copie fraîche : la durée de validité n'est pas écoulée. Le fichier est servi localement, aucune requête ne part. C'est le cas idéal, affiché « memory cache » ou « disk cache » dans les outils de développement.
  • •Copie périmée, mais revalidable : le navigateur envoie une requête conditionnelle. Si le fichier n'a pas changé, le serveur répond 304 Not Modified sans renvoyer le contenu. Un aller-retour, mais pas de téléchargement.
  • •Absence ou interdiction de cache : requête complète, réponse 200, téléchargement intégral.

L'impact est direct sur le LCP (Largest Contentful Paint), la métrique Core Web Vitals qui mesure l'affichage de l'élément principal, souvent une image héro. Si elle sort du cache, le LCP d'un visiteur récurrent tombe à quelques dizaines de millisecondes. Nous détaillons ces métriques dans notre guide des Core Web Vitals ; retenez que le cache est le levier le moins coûteux pour les améliorer chez les visiteurs qui reviennent, ceux qui sont le plus près d'acheter.

Cache-Control, ETag, Last-Modified : les trois en-têtes à comprendre

La mise en cache d'un site web se pilote avec des en-têtes HTTP envoyés dans chaque réponse. Trois d'entre eux font l'essentiel du travail.

Cache-Control : la durée de vie

Cache-Control est l'en-tête qui dit au navigateur (et aux caches intermédiaires) combien de temps conserver une réponse et dans quelles conditions. Il remplace l'ancien en-tête Expires, qui fixait une date d'expiration absolue : si les deux sont présents, Cache-Control l'emporte.

DirectiveCe qu'elle faitQuand l'utiliser
max-age=31536000Copie valable 1 an (en secondes)Fichiers dont le nom contient un hash
s-maxage=3600Durée valable uniquement pour les caches partagés (CDN)HTML servi via CDN, à régler indépendamment du navigateur
no-cacheMettre en cache, mais revalider à chaque fois avant usageHTML, données qui changent souvent
no-storeNe jamais stocker, nulle partPages privées, réponses contenant des données personnelles
public / privateAutorise ou interdit les caches partagésprivate pour tout contenu lié à un utilisateur connecté
immutablePromet que le fichier ne changera jamais à cette URLCombiné à max-age long sur les assets hashés
stale-while-revalidate=60Servir la copie périmée pendant 60 s tout en rafraîchissant en arrière-planHTML et API où un léger délai de mise à jour est acceptable
Le piège le plus fréquent concerne no-cache : contrairement à ce que son nom suggère, il n'empêche pas la mise en cache, il impose une revalidation. Seul no-store interdit le stockage.

ETag et Last-Modified : la revalidation

Quand une copie est périmée, le navigateur doit pouvoir demander « est-ce que ça a changé ? » sans tout retélécharger. Deux en-têtes de validation s'en chargent :

  • •Last-Modified : la date de dernière modification du fichier. Le navigateur la renvoie dans If-Modified-Since.
  • •ETag : une empreinte (généralement un hash du contenu) qui identifie précisément une version. Le navigateur la renvoie dans If-None-Match.

Si la version correspond, le serveur répond 304 Not Modified, sans corps de réponse. L'ETag est plus fiable que la date, car il ne dépend pas de l'horloge du serveur.

Expires et l'heuristique par défaut

Si un serveur n'envoie ni Cache-Control ni Expires, le navigateur ne renonce pas au cache : il applique une durée heuristique, en général 10 % du temps écoulé depuis Last-Modified. Un fichier modifié il y a dix mois peut donc rester en cache un mois entier sans que vous l'ayez décidé. C'est l'une des causes les plus courantes du fameux « le site ne se met pas à jour chez moi ».

À lire aussi : Vitesse de chargement : guide Core Web Vitals 2026 - les leviers qui pèsent le plus sur LCP, INP et CLS, et dans quel ordre les actionner.

Cache navigateur vs cache CDN : deux couches, pas une

Le cache CDN est une copie de vos réponses conservée sur les serveurs d'un réseau de diffusion de contenu (Vercel, Cloudflare, Fastly), au plus près de vos visiteurs. Là où le cache navigateur sert un seul utilisateur, le cache CDN sert tous les visiteurs d'une région à partir d'une seule réponse d'origine.

CritèreCache navigateurCache CDN
OùSur l'appareil du visiteurSur les serveurs de bordure du CDN
Qui en profiteCe visiteur uniquement, sur ses visites suivantesTous les visiteurs, y compris la première visite
Directive principalemax-ages-maxage (prioritaire sur max-age pour le CDN)
PurgeImpossible à distance : on ne vide pas le cache de milliers de navigateursInstantanée (purge par URL, par tag, ou redéploiement)
Conséquence fondamentale : tout ce que vous mettez longtemps en cache navigateur doit pouvoir changer d'URL, parce que vous ne forcerez jamais un visiteur à vider son cache. Le CDN, lui, se purge d'un clic. D'où la configuration type d'un site moderne : HTML revalidé côté navigateur mais long en cache CDN, et assets statiques très longs partout, à condition que leur nom change avec leur contenu.

Comment Next.js et Vercel gèrent le cache

C'est là que le choix de la stack compte. Sur un site WordPress classique, les en-têtes de cache dépendent de l'hébergeur et d'un plugin, et il faut les régler à la main. Avec Next.js sur Vercel, la stratégie décrite ci-dessus est appliquée par défaut.

Les assets immuables avec hash

Au moment du build, Next.js génère chaque fichier CSS et JavaScript sous un nom qui contient une empreinte de son contenu, dans le dossier /_next/static/. Si une ligne de code change, le hash change, donc l'URL change. Le serveur peut alors répondre sans risque :

Cache-Control: public, max-age=31536000, immutable

Un an de cache, et la promesse qu'il est inutile de revalider. Le problème de la mise à jour disparaît par construction : la nouvelle version du site référence de nouveaux fichiers, l'ancienne copie devient simplement inutilisée. C'est le cache busting par empreinte, la seule technique fiable.

Les pages HTML : revalidation côté navigateur, ISR côté CDN

Pour le HTML, Vercel impose au navigateur une revalidation à chaque chargement : le visiteur ne reste jamais bloqué sur une version obsolète. Côté CDN, en revanche, la page peut rester en cache pendant la durée que vous définissez.

C'est le rôle de l'ISR (Incremental Static Regeneration) : une page est générée une fois, servie depuis le cache CDN à tous les visiteurs, puis régénérée en arrière-plan quand sa durée de revalidation est écoulée (revalidate = 3600 pour une heure). Le premier visiteur après expiration reçoit encore l'ancienne version, instantanément, pendant que la nouvelle se construit : c'est le comportement stale-while-revalidate.

Pour les contenus qui doivent changer immédiatement, la revalidation à la demande (revalidatePath, revalidateTag) purge la page au moment où le contenu est modifié. Sur nos sites Strapi + Next.js, un webhook la déclenche à chaque publication : le client voit sa modification en ligne quelques secondes après avoir cliqué sur « Publier ».

Les images passées par next/image suivent la même logique : converties en WebP ou AVIF à la volée, puis mises en cache sur le CDN et dans le navigateur pour une durée réglée par minimumCacheTTL.

C'est cette combinaison (assets immuables, HTML revalidé, images optimisées et cachées) qui a permis au site de Sudparebrise d'atteindre un score Lighthouse de 100 après sa refonte, sans optimisation manuelle du cache. Découvrez la refonte et le SEO du site Sudparebrise pour voir ce que donne cette approche sur un site vitrine de PME.

Si vous hésitez sur la technologie de votre prochain site, notre article sur Next.js, le framework de référence pour un site en 2026 détaille les autres raisons de ce choix.

Les erreurs classiques et comment les corriger

Les mêmes problèmes reviennent d'un audit à l'autre. Ils tiennent presque tous en quatre cas.

Erreur 1 : le site ne se met pas à jour chez le client

Symptôme : vous avez changé le CSS ou publié une nouvelle photo, et le client voit toujours l'ancienne version. Vous lui dites de « vider le cache », et vous recommencez la semaine suivante.

Cause : un fichier a été mis en cache avec une durée longue alors que son URL ne change pas quand son contenu change : style.css avec un max-age d'un mois, une image remplacée sous le même nom, ou une page HTML sans en-tête, livrée à l'heuristique.

Correction : hash dans le nom des fichiers à durée longue ; no-cache sur le HTML et tout fichier à URL fixe. Dire aux visiteurs de vider leur cache n'est pas une solution : c'est l'aveu qu'il manque une règle.

Erreur 2 : aucun cache du tout

À l'opposé, certains sites envoient no-store partout, souvent pour corriger l'erreur 1 au plus vite. Chaque visite retélécharge tout, et Lighthouse le signale avec l'audit « Diffuser des ressources statiques avec une politique de cache efficace ». Correction : réserver no-store aux réponses réellement privées, et donner une durée longue à tout ce qui est statique et versionné.

Erreur 3 : mettre en cache ce qui ne doit pas l'être

Une page « Mon compte », un panier, une réponse d'API contenant un nom : marquées public derrière un CDN, elles peuvent être servies à un autre visiteur. Ces réponses doivent porter private, no-store.

Erreur 4 : confondre vider le cache navigateur et purger le CDN

Quand une modification n'apparaît pas, beaucoup vident leur cache navigateur, constatent que rien ne change, et concluent à un bug. En réalité, c'est souvent le cache CDN qui sert encore l'ancienne version. Vérifiez son en-tête (sur Vercel, x-vercel-cache: HIT, MISS ou STALE) avant d'accuser le navigateur.

Vérifier le cache dans les outils du navigateur

Pas besoin d'outil payant : Chrome ou Firefox suffisent, en deux minutes.

  1. 1.Ouvrez les outils de développement (F12) et l'onglet Réseau (Network).
  2. 2.Rechargez la page deux fois de suite, sans rechargement forcé.
  3. 3.Regardez la colonne Taille : les fichiers servis depuis le cache affichent « (memory cache) » ou « (disk cache) » au lieu d'un poids. Un 304 indique une revalidation réussie, un 200 avec un poids un téléchargement complet.
  4. 4.Cliquez sur un fichier et lisez ses en-têtes de réponse : Cache-Control, ETag, Last-Modified, Age, et l'en-tête du CDN (x-vercel-cache, cf-cache-status).
  5. 5.Cochez « Désactiver le cache » uniquement pour tester la première visite, puis décochez : sinon vous mesurez un comportement que vos visiteurs n'ont jamais.

En ligne de commande, curl -I https://votresite.fr/ renvoie les mêmes en-têtes, et l'audit Lighthouse liste les fichiers dont la politique de cache est trop courte. Sur un site bien configuré, vous devez voir des assets en max-age=31536000, immutable servis depuis le cache, un HTML revalidé côté navigateur et en HIT côté CDN, et aucune réponse personnalisée sans private ou no-store.

FAQ : cache navigateur

Sur chaque projet de création de site internet, ces en-têtes sont définis dès le déploiement, avec des assets versionnés et un HTML revalidé : c'est l'une des raisons du score Lighthouse 100 obtenu sur le site Sudparebrise.

Combien de temps faut-il garder un fichier en cache navigateur ?
Un an (max-age=31536000) pour tout fichier dont l'URL change avec son contenu : CSS, JavaScript et polices hashés, images versionnées. Une simple revalidation (no-cache) pour les fichiers à URL fixe comme les pages HTML. La durée dépend moins du type de fichier que de votre capacité à changer son URL.
Comment vider le cache de son navigateur ?
Pour un rechargement forcé d'une seule page, utilisez Ctrl+Maj+R (Cmd+Maj+R sur Mac). Pour vider tout le cache, ouvrez les paramètres de confidentialité du navigateur (Ctrl+Maj+Suppr sur Chrome et Firefox) et cochez « Images et fichiers en cache ». Si vous devez le faire régulièrement pour voir vos propres modifications, les en-têtes de cache de votre site sont mal réglés : c'est cela qu'il faut corriger.
Quelle est la différence entre no-cache et no-store ?
no-cache autorise le navigateur à stocker la réponse, mais l'oblige à vérifier auprès du serveur (via ETag ou Last-Modified) qu'elle est toujours valable avant de l'utiliser. no-store interdit tout stockage : la réponse n'est jamais écrite sur le disque. Le premier convient aux pages HTML, le second aux données privées.
Le cache navigateur améliore-t-il le référencement ?
Indirectement, oui. Google évalue les Core Web Vitals à partir des données réelles de vos visiteurs (CrUX), visites répétées comprises. Un cache bien réglé fait chuter le LCP sur ces visites et allège le serveur, ce qui réduit aussi le temps de réponse pour les premières visites et pour Googlebot. Ce n'est pas un facteur de classement en soi, mais c'est l'un des réglages les plus rentables pour l'expérience de page.

Un site rapide à la première visite, instantané à la seconde

Le cache navigateur n'est pas une optimisation de confort réservée aux gros sites. C'est la règle qui décide si vos visiteurs réguliers, ceux qui reviennent comparer ou prendre rendez-vous, trouvent un site instantané ou un site qui recharge tout. Trois en-têtes (Cache-Control, ETag, Last-Modified), deux couches (navigateur et CDN), un principe (durée longue seulement si l'URL change) : c'est tout ce qu'il y a à retenir.

Avec Next.js et Vercel, cette stratégie est appliquée par défaut, et c'est en partie pour cela que le site de Sudparebrise atteint un score Lighthouse de 100 sans bricolage. Si votre site présente l'un des symptômes décrits ici, un audit de ses en-têtes dit rapidement où agir.


Votre site se met mal à jour, ou charge tout à chaque visite ? Parlons de votre projet : nous auditons votre configuration de cache et vous disons ce qu'il faut corriger, ou refondre.

Auteur

Mathieu Rabissoni

Mathieu Rabissoni

Expert Web

Infos

24 octobre 2026
12 mn
Développement

Service lié

Création site internet

Site sur-mesure avec SEO intégré, livré en 30 jours.

Découvrir

Travailler avec ONDEV

On construit pour vous un site sur mesure, adapté à vos enjeux business.

  • Sans dépendance technique
  • Sans frais de maintenance inutiles
On en discute ?

Avec nous c'est simple, rien n'est compliqué !

Nos réalisations

Refonte & SEO - Amadeus Centre d’Affaires
Refonte & Stratégie SEO

Refonte & SEO - Amadeus Centre d’Affaires

Wiloq - Application SaaS Vestiaire Numérique
Application SaaS

Wiloq - Application SaaS Vestiaire Numérique

Voir toutes les réalisations

Votre site retélécharge son logo à chaque visite ? Le cache navigateur est mal réglé

Un visiteur qui revient sur votre site le lendemain ne devrait pas retélécharger votre logo, vos polices et vos scripts. Pourtant, sur une grande partie des sites vitrines que nous auditons, chaque page coûte autant à la dixième visite qu'à la première. À l'inverse, d'autres sites gardent tout en cache si longtemps que le client ne voit jamais les nouveaux tarifs. Dans les deux cas, la cause est la même : des en-têtes de cache posés au hasard, ou jamais posés.

Dans cet article, vous allez découvrir :

  • •Ce que votre navigateur garde en mémoire, et pourquoi une seconde visite devrait être quasi instantanée
  • •Les en-têtes Cache-Control, ETag et Last-Modified expliqués simplement, avec les valeurs à utiliser selon le fichier
  • •La différence concrète entre cache navigateur et cache CDN, et pourquoi il vous faut les deux
  • •Comment Next.js et Vercel règlent tout ça à votre place (assets hashés, ISR) : la mécanique derrière le Lighthouse 100 de Sudparebrise
  • •Les erreurs qui bloquent les mises à jour chez vos clients, et la vérification en deux minutes dans Chrome
Un bon cache ne fait pas gagner des millisecondes : il supprime des requêtes entières.

Qu'est-ce que le cache navigateur ?

Le cache navigateur est un espace de stockage local, sur l'appareil du visiteur, dans lequel Chrome, Safari ou Firefox conservent une copie des fichiers déjà téléchargés (images, CSS, JavaScript, polices, parfois pages HTML) pour les réutiliser sans les redemander au serveur. Son objectif : éviter un aller-retour réseau pour un fichier qui n'a pas changé.

Chaque fichier mis en cache est accompagné de règles envoyées par le serveur : combien de temps la copie reste valable, et comment vérifier si elle est toujours à jour. Sans ces règles, le navigateur improvise, et c'est rarement ce que vous voulez.

Ce qui se passe à la seconde visite

Quand une page demande un fichier, le navigateur regarde d'abord dans son cache. Trois scénarios sont possibles :

  • •Copie fraîche : la durée de validité n'est pas écoulée. Le fichier est servi localement, aucune requête ne part. C'est le cas idéal, affiché « memory cache » ou « disk cache » dans les outils de développement.
  • •Copie périmée, mais revalidable : le navigateur envoie une requête conditionnelle. Si le fichier n'a pas changé, le serveur répond 304 Not Modified sans renvoyer le contenu. Un aller-retour, mais pas de téléchargement.
  • •Absence ou interdiction de cache : requête complète, réponse 200, téléchargement intégral.

L'impact est direct sur le LCP (Largest Contentful Paint), la métrique Core Web Vitals qui mesure l'affichage de l'élément principal, souvent une image héro. Si elle sort du cache, le LCP d'un visiteur récurrent tombe à quelques dizaines de millisecondes. Nous détaillons ces métriques dans notre guide des Core Web Vitals ; retenez que le cache est le levier le moins coûteux pour les améliorer chez les visiteurs qui reviennent, ceux qui sont le plus près d'acheter.

Cache-Control, ETag, Last-Modified : les trois en-têtes à comprendre

La mise en cache d'un site web se pilote avec des en-têtes HTTP envoyés dans chaque réponse. Trois d'entre eux font l'essentiel du travail.

Cache-Control : la durée de vie

Cache-Control est l'en-tête qui dit au navigateur (et aux caches intermédiaires) combien de temps conserver une réponse et dans quelles conditions. Il remplace l'ancien en-tête Expires, qui fixait une date d'expiration absolue : si les deux sont présents, Cache-Control l'emporte.

DirectiveCe qu'elle faitQuand l'utiliser
max-age=31536000Copie valable 1 an (en secondes)Fichiers dont le nom contient un hash
s-maxage=3600Durée valable uniquement pour les caches partagés (CDN)HTML servi via CDN, à régler indépendamment du navigateur
no-cacheMettre en cache, mais revalider à chaque fois avant usageHTML, données qui changent souvent
no-storeNe jamais stocker, nulle partPages privées, réponses contenant des données personnelles
public / privateAutorise ou interdit les caches partagésprivate pour tout contenu lié à un utilisateur connecté
immutablePromet que le fichier ne changera jamais à cette URLCombiné à max-age long sur les assets hashés
stale-while-revalidate=60Servir la copie périmée pendant 60 s tout en rafraîchissant en arrière-planHTML et API où un léger délai de mise à jour est acceptable
Le piège le plus fréquent concerne no-cache : contrairement à ce que son nom suggère, il n'empêche pas la mise en cache, il impose une revalidation. Seul no-store interdit le stockage.

ETag et Last-Modified : la revalidation

Quand une copie est périmée, le navigateur doit pouvoir demander « est-ce que ça a changé ? » sans tout retélécharger. Deux en-têtes de validation s'en chargent :

  • •Last-Modified : la date de dernière modification du fichier. Le navigateur la renvoie dans If-Modified-Since.
  • •ETag : une empreinte (généralement un hash du contenu) qui identifie précisément une version. Le navigateur la renvoie dans If-None-Match.

Si la version correspond, le serveur répond 304 Not Modified, sans corps de réponse. L'ETag est plus fiable que la date, car il ne dépend pas de l'horloge du serveur.

Expires et l'heuristique par défaut

Si un serveur n'envoie ni Cache-Control ni Expires, le navigateur ne renonce pas au cache : il applique une durée heuristique, en général 10 % du temps écoulé depuis Last-Modified. Un fichier modifié il y a dix mois peut donc rester en cache un mois entier sans que vous l'ayez décidé. C'est l'une des causes les plus courantes du fameux « le site ne se met pas à jour chez moi ».

À lire aussi : Vitesse de chargement : guide Core Web Vitals 2026 - les leviers qui pèsent le plus sur LCP, INP et CLS, et dans quel ordre les actionner.

Cache navigateur vs cache CDN : deux couches, pas une

Le cache CDN est une copie de vos réponses conservée sur les serveurs d'un réseau de diffusion de contenu (Vercel, Cloudflare, Fastly), au plus près de vos visiteurs. Là où le cache navigateur sert un seul utilisateur, le cache CDN sert tous les visiteurs d'une région à partir d'une seule réponse d'origine.

CritèreCache navigateurCache CDN
OùSur l'appareil du visiteurSur les serveurs de bordure du CDN
Qui en profiteCe visiteur uniquement, sur ses visites suivantesTous les visiteurs, y compris la première visite
Directive principalemax-ages-maxage (prioritaire sur max-age pour le CDN)
PurgeImpossible à distance : on ne vide pas le cache de milliers de navigateursInstantanée (purge par URL, par tag, ou redéploiement)
Conséquence fondamentale : tout ce que vous mettez longtemps en cache navigateur doit pouvoir changer d'URL, parce que vous ne forcerez jamais un visiteur à vider son cache. Le CDN, lui, se purge d'un clic. D'où la configuration type d'un site moderne : HTML revalidé côté navigateur mais long en cache CDN, et assets statiques très longs partout, à condition que leur nom change avec leur contenu.

Comment Next.js et Vercel gèrent le cache

C'est là que le choix de la stack compte. Sur un site WordPress classique, les en-têtes de cache dépendent de l'hébergeur et d'un plugin, et il faut les régler à la main. Avec Next.js sur Vercel, la stratégie décrite ci-dessus est appliquée par défaut.

Les assets immuables avec hash

Au moment du build, Next.js génère chaque fichier CSS et JavaScript sous un nom qui contient une empreinte de son contenu, dans le dossier /_next/static/. Si une ligne de code change, le hash change, donc l'URL change. Le serveur peut alors répondre sans risque :

Cache-Control: public, max-age=31536000, immutable

Un an de cache, et la promesse qu'il est inutile de revalider. Le problème de la mise à jour disparaît par construction : la nouvelle version du site référence de nouveaux fichiers, l'ancienne copie devient simplement inutilisée. C'est le cache busting par empreinte, la seule technique fiable.

Les pages HTML : revalidation côté navigateur, ISR côté CDN

Pour le HTML, Vercel impose au navigateur une revalidation à chaque chargement : le visiteur ne reste jamais bloqué sur une version obsolète. Côté CDN, en revanche, la page peut rester en cache pendant la durée que vous définissez.

C'est le rôle de l'ISR (Incremental Static Regeneration) : une page est générée une fois, servie depuis le cache CDN à tous les visiteurs, puis régénérée en arrière-plan quand sa durée de revalidation est écoulée (revalidate = 3600 pour une heure). Le premier visiteur après expiration reçoit encore l'ancienne version, instantanément, pendant que la nouvelle se construit : c'est le comportement stale-while-revalidate.

Pour les contenus qui doivent changer immédiatement, la revalidation à la demande (revalidatePath, revalidateTag) purge la page au moment où le contenu est modifié. Sur nos sites Strapi + Next.js, un webhook la déclenche à chaque publication : le client voit sa modification en ligne quelques secondes après avoir cliqué sur « Publier ».

Les images passées par next/image suivent la même logique : converties en WebP ou AVIF à la volée, puis mises en cache sur le CDN et dans le navigateur pour une durée réglée par minimumCacheTTL.

C'est cette combinaison (assets immuables, HTML revalidé, images optimisées et cachées) qui a permis au site de Sudparebrise d'atteindre un score Lighthouse de 100 après sa refonte, sans optimisation manuelle du cache. Découvrez la refonte et le SEO du site Sudparebrise pour voir ce que donne cette approche sur un site vitrine de PME.

Si vous hésitez sur la technologie de votre prochain site, notre article sur Next.js, le framework de référence pour un site en 2026 détaille les autres raisons de ce choix.

Les erreurs classiques et comment les corriger

Les mêmes problèmes reviennent d'un audit à l'autre. Ils tiennent presque tous en quatre cas.

Erreur 1 : le site ne se met pas à jour chez le client

Symptôme : vous avez changé le CSS ou publié une nouvelle photo, et le client voit toujours l'ancienne version. Vous lui dites de « vider le cache », et vous recommencez la semaine suivante.

Cause : un fichier a été mis en cache avec une durée longue alors que son URL ne change pas quand son contenu change : style.css avec un max-age d'un mois, une image remplacée sous le même nom, ou une page HTML sans en-tête, livrée à l'heuristique.

Correction : hash dans le nom des fichiers à durée longue ; no-cache sur le HTML et tout fichier à URL fixe. Dire aux visiteurs de vider leur cache n'est pas une solution : c'est l'aveu qu'il manque une règle.

Erreur 2 : aucun cache du tout

À l'opposé, certains sites envoient no-store partout, souvent pour corriger l'erreur 1 au plus vite. Chaque visite retélécharge tout, et Lighthouse le signale avec l'audit « Diffuser des ressources statiques avec une politique de cache efficace ». Correction : réserver no-store aux réponses réellement privées, et donner une durée longue à tout ce qui est statique et versionné.

Erreur 3 : mettre en cache ce qui ne doit pas l'être

Une page « Mon compte », un panier, une réponse d'API contenant un nom : marquées public derrière un CDN, elles peuvent être servies à un autre visiteur. Ces réponses doivent porter private, no-store.

Erreur 4 : confondre vider le cache navigateur et purger le CDN

Quand une modification n'apparaît pas, beaucoup vident leur cache navigateur, constatent que rien ne change, et concluent à un bug. En réalité, c'est souvent le cache CDN qui sert encore l'ancienne version. Vérifiez son en-tête (sur Vercel, x-vercel-cache: HIT, MISS ou STALE) avant d'accuser le navigateur.

Vérifier le cache dans les outils du navigateur

Pas besoin d'outil payant : Chrome ou Firefox suffisent, en deux minutes.

  1. 1.Ouvrez les outils de développement (F12) et l'onglet Réseau (Network).
  2. 2.Rechargez la page deux fois de suite, sans rechargement forcé.
  3. 3.Regardez la colonne Taille : les fichiers servis depuis le cache affichent « (memory cache) » ou « (disk cache) » au lieu d'un poids. Un 304 indique une revalidation réussie, un 200 avec un poids un téléchargement complet.
  4. 4.Cliquez sur un fichier et lisez ses en-têtes de réponse : Cache-Control, ETag, Last-Modified, Age, et l'en-tête du CDN (x-vercel-cache, cf-cache-status).
  5. 5.Cochez « Désactiver le cache » uniquement pour tester la première visite, puis décochez : sinon vous mesurez un comportement que vos visiteurs n'ont jamais.

En ligne de commande, curl -I https://votresite.fr/ renvoie les mêmes en-têtes, et l'audit Lighthouse liste les fichiers dont la politique de cache est trop courte. Sur un site bien configuré, vous devez voir des assets en max-age=31536000, immutable servis depuis le cache, un HTML revalidé côté navigateur et en HIT côté CDN, et aucune réponse personnalisée sans private ou no-store.

FAQ : cache navigateur

Sur chaque projet de création de site internet, ces en-têtes sont définis dès le déploiement, avec des assets versionnés et un HTML revalidé : c'est l'une des raisons du score Lighthouse 100 obtenu sur le site Sudparebrise.

Combien de temps faut-il garder un fichier en cache navigateur ?
Un an (max-age=31536000) pour tout fichier dont l'URL change avec son contenu : CSS, JavaScript et polices hashés, images versionnées. Une simple revalidation (no-cache) pour les fichiers à URL fixe comme les pages HTML. La durée dépend moins du type de fichier que de votre capacité à changer son URL.
Comment vider le cache de son navigateur ?
Pour un rechargement forcé d'une seule page, utilisez Ctrl+Maj+R (Cmd+Maj+R sur Mac). Pour vider tout le cache, ouvrez les paramètres de confidentialité du navigateur (Ctrl+Maj+Suppr sur Chrome et Firefox) et cochez « Images et fichiers en cache ». Si vous devez le faire régulièrement pour voir vos propres modifications, les en-têtes de cache de votre site sont mal réglés : c'est cela qu'il faut corriger.
Quelle est la différence entre no-cache et no-store ?
no-cache autorise le navigateur à stocker la réponse, mais l'oblige à vérifier auprès du serveur (via ETag ou Last-Modified) qu'elle est toujours valable avant de l'utiliser. no-store interdit tout stockage : la réponse n'est jamais écrite sur le disque. Le premier convient aux pages HTML, le second aux données privées.
Le cache navigateur améliore-t-il le référencement ?
Indirectement, oui. Google évalue les Core Web Vitals à partir des données réelles de vos visiteurs (CrUX), visites répétées comprises. Un cache bien réglé fait chuter le LCP sur ces visites et allège le serveur, ce qui réduit aussi le temps de réponse pour les premières visites et pour Googlebot. Ce n'est pas un facteur de classement en soi, mais c'est l'un des réglages les plus rentables pour l'expérience de page.

Un site rapide à la première visite, instantané à la seconde

Le cache navigateur n'est pas une optimisation de confort réservée aux gros sites. C'est la règle qui décide si vos visiteurs réguliers, ceux qui reviennent comparer ou prendre rendez-vous, trouvent un site instantané ou un site qui recharge tout. Trois en-têtes (Cache-Control, ETag, Last-Modified), deux couches (navigateur et CDN), un principe (durée longue seulement si l'URL change) : c'est tout ce qu'il y a à retenir.

Avec Next.js et Vercel, cette stratégie est appliquée par défaut, et c'est en partie pour cela que le site de Sudparebrise atteint un score Lighthouse de 100 sans bricolage. Si votre site présente l'un des symptômes décrits ici, un audit de ses en-têtes dit rapidement où agir.


Votre site se met mal à jour, ou charge tout à chaque visite ? Parlons de votre projet : nous auditons votre configuration de cache et vous disons ce qu'il faut corriger, ou refondre.

Mathieu Rabissoni

Mathieu Rabissoni

Expert Web

24 octobre 2026
12 mn
Développement

Service lié

Création site internet

Site sur-mesure avec SEO intégré, livré en 30 jours.

Découvrir

Travailler avec ONDEV

On construit pour vous un site sur mesure, adapté à vos enjeux business.

On en discute ?
Mathieu Rabissoni

Mathieu Rabissoni

Expert Acquisition Client Digitale

Passionné par le web depuis toujours, j'aide les entreprises à acquérir des clients grâce au digital. Sites web, applications, SEO : je transforme vos idées en solutions performantes.

En savoir plus

Services ONDEV liés à cet article

Création site internet Marseille•Application web sur-mesure•Refonte de site internet•Expert Next.js Marseille•Agence web à Marseille•Nos réalisations

Besoin d'aide pour votre projet ?

Discutons de vos objectifs et voyons comment je peux vous aider à les atteindre.

Prendre rendez-vousAppelerWhatsApp