Skip to content

Check website BFCache online

Check whether a page is restored when you go back. Find the browser restrictions that cause a full reload.

Blocking causes

Why going back requires a reload

BFCache rarely has one universal blocker. The report separates server headers, browser restrictions, and frontend code so the fix does not become guesswork.

script lifecycle

unload and beforeunload

An unload handler or another recorded lifecycle restriction may prevent restoration. Locate the handler and check why it exists before changing it. Test navigation away and back again after the fix.

response headers

Cache-Control: no-store

Use the browser’s recorded reason to review response settings. Cache-Control: no-store is not a universal blocker in current Chrome. Keep protections for sensitive pages and retest the actual navigation after a change.

runtime state

JavaScript state and connections

WebSocket, IndexedDB transactions, timers, and SPA state can block restore. Milten checks what happens when the user leaves the page and comes back through pageshow.

FAQ

Frequently asked questions about Back/Forward Cache

Short answers about what BFCache is, why it turns off, and how to safely fix blockers.

What is Back/Forward Cache?
BFCache keeps a full page snapshot in browser memory. When the user clicks Back or Forward, the page can appear immediately without loading HTML, resources, or rendering again.
Why does a page miss BFCache?
Read the reasons recorded by the tested browser: page lifecycle handlers, open resources and response settings can affect eligibility. Rules vary by browser and state. In current Chrome, no-store and beforeunload are not unconditional blockers by themselves.
How is BFCache connected to Core Web Vitals?
A BFCache restore usually feels instant because the browser shows the ready page state. It reduces repeated loads and improves the experience for back and forward navigation.
Can we remove unload without losing analytics?
Review which events depend on unload before removing it. Visibility changes, pagehide or sendBeacon may fit the purpose, but delivery still needs checking. Verify events on both a normal load and a BFCache restore without counting the same visit twice.
Do we need to check every page?
Start with key templates: homepage, catalog, product page, article, account area, or checkout. If the blocker lives in the shared layout, it will appear across several page types.
Cookies

We use cookies

We use cookies to give you a better experience on our site. You can learn more about how we use cookies in our privacy policy.