Google introduit un changement significatif dans le comportement du cache arrière/avant de Chrome (BFCache), permettant aux pages Web d'être stockées dans le cache, même si un webmaster précise de ne pas stocker une page dans le cache du navigateur.
« bfcache est un cache en mémoire qui stocke un instantané complet d'une page (y compris le tas JavaScript) au fur et à mesure que l'utilisateur s'éloigne », explique Le site web.dev de Google.
« Avec la page entière en mémoire, le navigateur peut la restaurer rapidement et facilement si l'utilisateur décide de revenir. »
Les administrateurs de site peuvent spécifier comment leurs pages Web sont stockées dans le cache d'un navigateur à l'aide de l'en-tête « Cache-control : ». Une option consiste à utiliser l'en-tête « Cache-control : no-store », qui empêche le stockage de la réponse du site Web dans le navigateur.
Cependant, les navigateurs ne stockent pas les pages Web dans bfcache s'ils utilisent cet en-tête, ce qui entraîne des problèmes de performances lorsque les utilisateurs reviennent à ces pages à l'aide des boutons Précédent et Suivant du navigateur.
Google va ignorer l'en-tête « no-store » pour le bfcache
Google propose que les pages Web doivent être stockées dans BFCache même lorsque l'en-tête « Cache-control: no-store » est présent sur les pages HTTPS. Cette approche augmenterait les cas de navigations instantanées avant/arrière, ce qui se traduirait par une meilleure expérience.
L'ingénieur de Google, Fergal Daly, affirme que l'objectif premier n'est pas d'empêcher la restauration des pages contenant des données sensibles. L’objectif est plutôt d’éviter de restaurer des pages contenant des données sensibles auxquelles l’utilisateur ne devrait plus avoir accès.
Si aucune modification n'est apportée aux cookies, on suppose que les requêtes HTTP du navigateur, et donc les décisions d'accès, restent cohérentes. Le défi réside dans les changements côté serveur entraînant une perte d’accès.
Pour les sites utilisant des technologies telles que EventSource pour refléter les modifications apportées aux pages ouvertes, ces mises à jour déclencheront l'expulsion de BFCache ou fourniront des événements rapidement lors de la restauration. Pour les sites dépourvus de mécanismes de mise à jour immédiate, il existe un risque que les utilisateurs accèdent à des données obsolètes, ce que le comportement proposé par BFCache pourrait potentiellement exacerber.
Google s'efforce de répondre à ces préoccupations en déployant la fonctionnalité pour tester d'abord les chaînes et en obtenant suffisamment de données pour comprendre l'impact.
Certains ont fait part de leurs inquiétudes quant au fait que ce changement pourrait rompre les promesses faites aux développeurs Web qui supposent que l'en-tête « Cache-control : no-store » signifie que le navigateur ne mettra pas la page Web en cache.
« Pour moi, cela semble toucher un domaine sensible et je ne suis pas sûr de la manière dont cela se déroulera dans le monde réel », a commenté Daniel Bratell, développeur d'Opera.
« Même si cache-control: no-store est largement surutilisé, et les chiffres que vous indiquez semblent indiquer que c'est le cas, les développeurs Web n'ont-ils pas promis qu'une telle ressource disparaîtrait à jamais une fois la page créée. n'est plus montré, et est-ce une promesse qui peut raisonnablement être rompue ? »
Cependant, Daly dit que cet en-tête promet seulement de ne pas stocker de page Web dans le cache habituel du navigateur, pas dans le bfcache.
« Il n'y a aucune promesse explicite que CCNS empêche BFCaching. L'en-tête CCNS, ou en général, toutes les directives Cache-control, sont destinés à contrôler la mise en cache HTTP, donc la promesse explicite concerne le cache HTTP », a expliqué Daly.
« BFCache ne fait pas partie de la mise en cache HTTP et les développeurs ne doivent pas interpréter l'en-tête CCNS comme une promesse que la page ne sera pas BFCache. »
En redéfinissant la manière dont BFCache interagit avec la directive « Cache-control : no-store », les développeurs de Google Chrome espèrent créer une expérience de navigation plus réactive sans compromettre la sécurité et la confidentialité des utilisateurs.