Exploring a back/forward cache for Chrome

On the Chrome team, we are exploring a new back/forward cache to cache pages in-memory (preserving JavaScript & DOM state) when the user navigates away. This is definitely not a trivial endeavor but if it succeeds it will make navigating back and forth very fast.

A back/forward cache (bfcache) caches whole pages (including the JavaScript heap) when navigating away from a page, so that the full state of the page can be restored when the user navigates back. Think of it as pausing a page when you leave it and playing it when you return.

Here is a first-look of an early prototype of back/forward cache in action on desktop:

We also have a preview of the back/forward cache working on Chrome for Android:

We estimate this change could improve the performance of up to 19% of all navigations for mobile Chrome. You can find more detail about this feature in the bfcache explainer.

There is medium cross-browser interop risk with this change. Both Firefox and Safari already have back-forward cache implementations that are subtly different. Chrome is opting not to use WebKit's implementation of bfcache due to incompatibility with Chrome's multi-process architecture.

Our formal intent-to-implement for the back-forward cache is on blink-dev for anyone wishing to contribute to the discussions.

Thanks to Arthur Sonzogni, Alexander Timin, Kenji Baheux, and Sami for their help putting together our prototype videos.