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.
Below 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 performance 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 multiprocess 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.