Publié le 21 octobre 2024, dernière mise à jour le 9 septembre 2025
Chrome va être modifié pour permettre l'utilisation du cache amélioré pour les pages utilisant Cache-Control: no-store
lorsque cela est possible. Découvrez ce que cela signifie pour les développeurs.
Arrière-plan
Définir Cache-Control: no-store
comme en-tête HTTP indique que la page ne doit pas être stockée dans le cache HTTP. Cette directive doit être utilisée pour les pages contenant des données sensibles (par exemple, les pages auxquelles un utilisateur est connecté), mais la directive no-store
est souvent utilisée sur les pages sans données sensibles.
Avec le cache amélioré, au lieu de détruire une page lorsque l'utilisateur navigue ailleurs, nous reportons la destruction et suspendons l'exécution de JS. Si l'utilisateur revient en arrière rapidement, nous rendons la page de nouveau visible et réactivons l'exécution du code JavaScript. L'utilisateur peut ainsi naviguer d'une page à l'autre presque instantanément.
Bien que cela ne soit pas requis par la spécification HTML, les navigateurs considèrent généralement Cache-Control: no-store
comme un signal indiquant qu'il faut éviter de placer la page dans le cache bfcache. Il s'agit de la principale raison pour laquelle le cache amélioré n'est pas utilisé, pour environ 17 % des navigations dans l'historique sur mobile et 7 % sur ordinateur. Cela signifie que ces pages ne bénéficient pas des restaurations rapides et doivent recharger complètement la page, y compris les appels réseau, l'exécution JavaScript et le rendu.
La valeur Cache-Control: no-store
est souvent définie pour éviter les problèmes de mise en cache lorsque le site change, mais cette raison est moins pertinente lorsque la bfcache est utilisée, car la page entière est restaurée presque comme si elle était restée ouverte tout le temps.
Comment Chrome modifie ce comportement
Chrome a annoncé son intention de modifier ce comportement, mais il adopte une approche prudente. Depuis Chrome 116, nous effectuons des tests pour augmenter progressivement le pourcentage de chargements de page. Nous prévoyons d'atteindre 100 % en mars et avril 2025.
Données sensibles
Bien que notre analyse montre que la majorité des navigations vers l'arrière ou vers l'avant n'incluent pas de données sensibles et devraient donc être éligibles au cache amélioré, il existe des cas où les pages ne devraient pas être placées dans le cache amélioré. Par exemple, une fois l'utilisateur déconnecté, il ne doit pas être possible de récupérer une page à laquelle il était connecté en naviguant en arrière ou en avant.
Pour éviter cela, Chrome supprimera une page du cache amélioré en cas de modification des cookies ou d'autres méthodes d'autorisation.
De plus, l'utilisation des API suivantes pour les pages utilisant Cache-Control: no-store
continuera de rendre ces pages inéligibles au cache amélioré :
Notez qu'il ne s'agit pas d'une liste exhaustive des API qui empêchent l'utilisation du bfcache, mais des API qui bloquent le bfcache sur les pages Cache-Control: no-store
même si elles ne sont pas utilisées au moment de quitter la page.
Le délai d'expiration du cache amélioré pour les pages Cache-Control: no-store
est également réduit à trois minutes (au lieu des 10 minutes utilisées pour les pages qui n'utilisent pas Cache-Control: no-store
) afin de réduire davantage les risques.
Options de désactivation pour les entreprises
Les entreprises disposent souvent de logiciels difficiles à mettre à jour et d'appareils partagés. La règle AllowBackForwardCacheForCacheControlNoStorePageEnabled
peut être désactivée pour continuer à empêcher l'utilisation du cache amélioré pour les pages Cache-Control: no-store
.
Tester la modification
Les développeurs peuvent tester ce changement avec l'indicateur suivant :
--enable-features=CacheControlNoStoreEnterBackForwardCache:level/restore-unless-cookie-change
Si l'une des exceptions précédentes s'applique (par exemple, si les cookies changent), la page ne pourra pas utiliser le cache amélioré. La raison "Les pages dont la ressource principale est Cache-Control: no-store
ne peuvent pas entrer dans le cache amélioré" s'affichera dans l'outil de test du cache amélioré des outils de développement Chrome.
Vous pouvez utiliser cette page de test du cache arrière-avant pour effectuer des tests avec et sans cet indicateur.
Ce que les développeurs doivent savoir
Les développeurs n'ont pas besoin d'apporter de modifications pour que leurs utilisateurs bénéficient de cette utilisation accrue du cache arrière/avant. Toutefois, ils devront peut-être tenir compte de certains éléments. D'autres sites ont peut-être rencontré des problèmes similaires lors du lancement initial du bfcache en décembre 2021.
Les développeurs doivent-ils toujours s'efforcer de réduire l'utilisation de Cache-Control: no-store
?
Le bfcache est activé pour Cache-Control: no-store
dans les circonstances limitées mentionnées précédemment et uniquement pour Chrome. D'autres navigateurs peuvent toujours bloquer l'utilisation du cache bf lorsque Cache-Control: no-store
est utilisé.
La bonne pratique reste de minimiser l'utilisation de Cache-Control: no-store
plutôt que de dépendre de ces heuristiques.
Impact sur les performances
Nous apportons ce changement afin d'améliorer l'expérience sur la page pour les utilisateurs sur le Web. Nous avons constaté des améliorations notables des métriques Core Web Vitals lorsque nous avons lancé le bfcache. Nous souhaitons désormais étendre ces améliorations à davantage de sites.
Les propriétaires de sites pourront constater une amélioration de leurs Core Web Vitals à mesure que cette fonctionnalité sera déployée. Ils pourront mesurer l'utilisation du bfcache dans CrUX, y compris dans CrUX Vis.
Analyse de l'impact
Les pages restaurées à partir du cache amélioré "restaurent" l'ancienne page (y compris le tas JavaScript) au lieu de la recharger. De nombreux fournisseurs d'analyses populaires ne mesurent pas les restaurations à partir du cache amélioré comme de nouvelles pages vues, car ils ne déclenchent les pages vues que lors de leur chargement initial.
Par conséquent, les sites peuvent constater une réduction du nombre de chargements de page dans leurs données analytiques lorsqu'ils commencent à utiliser le cache amélioré pour la première fois. Nous vous recommandons de les considérer comme des vues de page en définissant des écouteurs pour l'événement pageshow
et en vérifiant la propriété persisted
:
// Send a pageview when the page is first loaded.
gtag('event', 'page_view');
// Send another pageview if the page is restored from bfcache.
window.addEventListener('pageshow', (event) => {
if (event.persisted) {
// Page was restored from bfcache, sent another page view.
gtag('event', 'page_view');
}
});
Gérer les mises à jour lors de la restauration d'une page
Étant donné que les sites peuvent désormais voir l'utilisation du cache bf alors qu'ils ne la voyaient pas auparavant et que la page était plutôt rechargée complètement avec des données actualisées, les développeurs peuvent envisager d'actualiser les données lors d'une restauration du cache bf.
Les mises à jour peuvent être déclenchées de la même manière que la journalisation des vues de page supplémentaires pour les analyses à l'aide de l'événement pageshow
et de la vérification de la propriété persisted
.
Notez que tous les contenus n'ont pas besoin d'être actualisés et que les utilisateurs peuvent préférer revenir au contenu qu'ils ont vu précédemment. Par exemple, si l'utilisateur actualise une liste d'articles, il peut ne plus voir celui qu'il souhaitait consulter à nouveau.
Impact sur les annonces
Comme pour l'impact sur les données analytiques, les sites peuvent constater une diminution des impressions d'annonces si les annonces ne se chargent qu'au chargement de la page. Les annonces peuvent être actualisées de manière programmatique lors de la restauration du cache amélioré pour assurer la parité avec les chargements de page complète, à nouveau à l'aide de l'événement pageshow
et en vérifiant la propriété persisted
, mais ce n'est pas toujours la bonne chose à faire. Consultez la documentation de votre fournisseur d'annonces pour savoir comment déclencher le rechargement des annonces.
En savoir plus sur le cache amélioré
Pour en savoir plus sur le cache amélioré, consultez notre guide technique complet sur le cache amélioré.
Commentaires
Nous sommes impatients de recevoir vos commentaires sur ce changement. Vous pouvez les envoyer dans l'outil de suivi des problèmes de Chrome en utilisant le composant bfcache.
Conclusion
Nous sommes ravis de pouvoir étendre les avantages du bfcache à un plus grand nombre de pages afin d'améliorer l'expérience utilisateur. Nous avons soigneusement étudié ce changement et nous nous efforçons de le déployer de la manière la plus sûre possible. Nous espérons que les informations fournies ici aideront les développeurs à comprendre ce changement et à effectuer les modifications nécessaires pour éviter tout problème.