Gepubliceerd: 21 oktober 2024, Laatst bijgewerkt: 9 september 2025
Chrome voert een wijziging door waardoor het gebruik van back/forward cache (bfcache) mogelijk wordt voor pagina's die Cache-Control: no-store gebruiken, wanneer dit veilig is. Ontdek wat dit betekent voor ontwikkelaars.
Achtergrond
Het instellen Cache-Control: no-store als HTTP-header geeft aan dat de pagina niet in de HTTP-cache moet worden opgeslagen. Dit is met name geschikt voor pagina's met gevoelige gegevens, bijvoorbeeld pagina's waarop een gebruiker is ingelogd. De no-store -richtlijn wordt echter vaak ook gebruikt voor pagina's zonder gevoelige gegevens.
Met bfcache wordt een pagina niet direct verwijderd wanneer de gebruiker de pagina verlaat, maar wordt de JavaScript-uitvoering gepauzeerd. Als de gebruiker kort daarna terugkeert, wordt de pagina weer zichtbaar gemaakt en wordt de JavaScript-uitvoering hervat. Dit resulteert in een vrijwel directe paginanavigatie voor de gebruiker.
Hoewel het niet vereist is door de HTML-specificatie, interpreteren browsers Cache-Control: no-store doorgaans als een signaal om te voorkomen dat de pagina in bfcache wordt geplaatst. Dit is de belangrijkste reden waarom bfcache niet wordt gebruikt , namelijk voor ongeveer 17% van de navigaties in de browsegeschiedenis op mobiele apparaten en 7% op desktops. Dit betekent dat deze pagina's niet profiteren van de snelle herstelfuncties en volledig opnieuw moeten worden geladen, inclusief alle netwerkoproepen, JavaScript-uitvoering en rendering.
Vaak wordt Cache-Control: no-store ingesteld om cacheproblemen te voorkomen wanneer de site verandert, maar deze reden is minder relevant wanneer bfcache wordt gebruikt, omdat de volledige pagina vrijwel wordt hersteld alsof deze altijd open was gebleven.
Hoe Chrome dit gedrag verandert
Chrome heeft aangekondigd dit gedrag te willen veranderen, maar gaat daarbij voorzichtig te werk. Sinds Chrome versie 116 voeren we experimenten uit waarbij het percentage pagina-aanvragen geleidelijk wordt verhoogd. Naar verwachting zal dit in maart en april 2025 100% bereiken.
Gevoelige gegevens
Hoewel onze analyse aantoont dat de meeste terug- of vooruitnavigaties geen gevoelige gegevens bevatten en dus in aanmerking zouden moeten komen voor de bfcache, zijn er gevallen waarin pagina's niet in de bfcache thuishoren. Bijvoorbeeld: na het uitloggen zou het niet mogelijk moeten zijn om een ingelogde pagina op te halen door terug of vooruit te navigeren.
Om dit te voorkomen, verwijdert Chrome een pagina uit de bfcache wanneer er wijzigingen worden aangebracht in cookies of andere autorisatiemethoden .
Daarnaast zal het gebruik van de volgende API's voor pagina's die Cache-Control: no-store gebruiken, ervoor blijven zorgen dat die pagina's niet in aanmerking komen voor bfcache:
Als een pagina Cache-control: no-store een fetch- of XHR-verzoek indient en dit verzoek retourneert Cache-control: no-store , dan wordt de pagina ook verwijderd, omdat deze gevoelige gegevens kan bevatten.
Houd er rekening mee dat dit geen complete lijst is van API's die het gebruik van bfcache voorkomen, maar van de API's die bfcache blokkeren op Cache-Control: no-store pagina's, zelfs als ze op het moment dat de pagina wordt verlaten niet worden gebruikt.
De bfcache-time-out voor pagina's Cache-Control: no-store is ook verlaagd naar 3 minuten (in plaats van de 10 minuten die werden gebruikt voor pagina's die geen gebruik maken Cache-Control: no-store ) om het risico verder te verkleinen.
Enterprise out kiest ervoor
Bedrijven hebben vaak software die moeilijk te updaten is en gedeelde apparaten. Het beleid AllowBackForwardCacheForCacheControlNoStorePageEnabled kan worden uitgeschakeld om het gebruik van bfcache voor Cache-Control: no-store pagina's te blijven voorkomen.
De wijziging testen
Ontwikkelaars kunnen deze wijziging testen met de volgende vlag:
--enable-features=CacheControlNoStoreEnterBackForwardCache:level/restore-unless-cookie-change
Als een van de voorgaande uitzonderingen van toepassing is – bijvoorbeeld als cookies veranderen – kan de pagina de bfcache niet gebruiken. De reden hiervoor is "Pagina's waarvan de hoofdbron Cache-Control: no-store heeft, kunnen geen back/forward cache openen.", zoals weergegeven in de bfcache-tester van Chrome DevTools .
Je kunt deze bfcache-testpagina gebruiken om te testen met en zonder deze vlag.
Wat ontwikkelaars moeten weten
Hoewel ontwikkelaars geen wijzigingen hoeven aan te brengen om hun gebruikers te laten profiteren van dit toegenomen gebruik van bfcache, zijn er wel een aantal zaken waarmee ze rekening moeten houden. Dit waren vergelijkbare overwegingen die andere websites mogelijk ook hebben ondervonden bij de eerste lancering van bfcache in december 2021.
Moeten ontwikkelaars er nog steeds naar streven het gebruik van Cache-Control: no-store te verminderen?
De bfcache is ingeschakeld voor Cache-Control: no-store onder de eerder genoemde beperkte omstandigheden en alleen voor Chrome. Andere browsers kunnen het gebruik van bfcache nog steeds blokkeren wanneer Cache-Control: no-store wordt gebruikt.
Het blijft het beste om het gebruik van Cache-Control: no-store in plaats van op deze heuristieken te vertrouwen.
Impact op prestaties
De reden voor deze wijziging is om de gebruikerservaring op websites te verbeteren. We zagen merkbare verbeteringen in Core Web Vitals toen we bfcache voor het eerst lanceerden, en nu willen we diezelfde verbeteringen naar meer websites brengen.
Website-eigenaren kunnen een verbetering zien in hun Core Web Vitals naarmate dit wordt uitgerold, en kunnen het bfcache-gebruik meten in CrUX, onder andere in CrUX Vis .
Impactanalyse
Pagina's die vanuit de bfcache worden hersteld, "herstellen" de oude pagina (inclusief de JavaScript-heap) in plaats van de pagina opnieuw te laden. Veel populaire analyseproviders tellen bfcache-herstelacties niet mee als nieuwe paginaweergaven, omdat ze alleen paginaweergaven registreren wanneer ze voor het eerst worden geladen.
Websites kunnen daarom een afname in het aantal paginaladingen in hun analyses zien wanneer ze bfcache voor het eerst gaan gebruiken. We raden aan om dit te beschouwen als paginaweergaven door listeners in te stellen voor de pageshow gebeurtenis en de persisted eigenschap te controleren:
// 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');
}
});
Verwerk updates bij het herstellen van de pagina.
Omdat websites nu mogelijk bfcache-gebruik zien terwijl dit voorheen niet het geval was en de pagina in plaats daarvan volledig opnieuw geladen zou worden met actuele gegevens, doen ontwikkelaars er wellicht goed aan om de gegevens te vernieuwen bij een bfcache-herstel.
Updates kunnen op een vergelijkbare manier worden geactiveerd als het registreren van extra paginaweergaven voor analyses, door gebruik te maken van de pageshow gebeurtenis en de persisted eigenschap te controleren.
Houd er rekening mee dat niet alle content hoeft te worden bijgewerkt en dat gebruikers er wellicht de voorkeur aan geven om terug te gaan naar content die ze eerder hebben bekeken. Het vernieuwen van een lijst met artikelen kan er bijvoorbeeld toe leiden dat een gebruiker een artikel dat hij of zij eerder wilde bekijken, niet meer ziet.
Impact op advertenties
Net als bij de impact op analytics, kunnen websites een afname in advertentievertoningen zien als advertenties alleen bij het laden van de pagina worden weergegeven. Advertenties kunnen programmatisch worden vernieuwd bij het herstellen van de bfcache om ervoor te zorgen dat ze hetzelfde blijven als bij het volledig laden van de pagina. Dit kan wederom met behulp van de pageshow gebeurtenis en door de persisted eigenschap te controleren, maar is niet altijd de juiste aanpak . Raadpleeg de documentatie van uw advertentieaanbieder voor meer informatie over het activeren van advertentieherladingen.
Meer informatie over bfcache
Voor meer informatie over bfcache kunt u onze uitgebreide technische handleiding voor bfcache raadplegen.
Feedback
We ontvangen graag feedback over deze wijziging. Deze kan worden gegeven via de issue-tracker van Chrome met behulp van de bfcache-component .
Conclusie
We zijn verheugd om de voordelen van bfcache naar veel meer pagina's te brengen om de gebruikerservaring te verbeteren. We hebben deze wijziging zorgvuldig overwogen en onze aanpak is erop gericht om deze zo veilig mogelijk uit te rollen. We hopen dat de informatie hier ontwikkelaars helpt deze wijziging te begrijpen en de nodige aanpassingen te maken om problemen te voorkomen wanneer deze wordt doorgevoerd.