Contact emails bfcache-...@chromium.org
Explainer https://docs.google.com/document/d/1PmUFTxTJN4n-WyWry4tQ96t5P9XXkgwFo9CiNeslZEg/edit Specification [updated since Android I2S] Back-forward cache (BFCache) is an already existing concept in HTML spec. The BFCache eligibility is referred to as “document salvageable state” [spec <https://html.spec.whatwg.org/multipage/browsing-the-web.html#concept-document-salvageable>], and the navigation steps like “unloading a document” [spec <https://html.spec.whatwg.org/multipage/browsing-the-web.html#unload-a-document>] refers to BFCache as “keep document alive in a session history entry”. We have been actively improving BFCache in standards through writing guidelines <https://github.com/w3ctag/design-principles/pull/317> on how web platform features should interact with BFCache, filing and fixing current spec issues <https://github.com/whatwg/html/issues/5880>, and making it possible to test BFCache through WPTs <https://github.com/web-platform-tests/wpt/pull/28950> (+ writing the WPTs). Design docs [unchanged] https://docs.google.com/document/d/1jwzZx_hUqca6ALmK2G1aNcykhWM1Bh79zRZlUg5KKjQ/edit Summary Back-forward cache is a browser feature which improves the user experience by keeping a page alive after the user navigates away from it and reuses it for session history navigation (browser back/forward buttons, history.back(), etc) to make the navigation instant. The pages in the cache are frozen and do not run any javascript. We already shipped <https://www.chromestatus.com/feature/5815270035685376> this feature for Android <https://groups.google.com/a/chromium.org/g/blink-dev/c/XS9VnYQoaQE>. We want to ship back-forward cache on desktop environments. Link to “Intent to Experiment” blink-dev discussion https://groups.google.com/a/chromium.org/g/bfcache-dev/c/6nKwd472yPI Is this feature supported on all six Blink platforms (Windows, Mac, Linux, Chrome OS, Android, and Android WebView)? No. We already shipped this feature for Android. We would like to proceed shipping of BFCache to Windows, Mac, Linux and Chrome OS platforms with this I2S. We do not have active plans to support Android WebView as the cost of integrating WebView embedding APIs with back-forward cache is too high, while history navigation optimisations have limited benefit for WebView given its nature. Debuggability [unchanged] Support for DevTools is planned <https://docs.google.com/document/d/1AERry3jkVMk1OHtka_1Q3ThC-9OIMxUxZN4cPH9hi54/edit?usp=sharing> and currently being implemented. With this addition, web developers can see a list of reasons why their page is not eligible for bfcache. Blink component UI>Browser>Navigation>BFCache Search tags bfcache <https://www.chromestatus.com/features/6520669959356416#tags:bfcache> RisksInteroperability and Compatibility [updated since Android I2S] Interoperability - Low, given that we have been shipping it on Android, along with other vendors. Gecko: Shipping <https://developer.mozilla.org/en-US/docs/Mozilla/Firefox/Releases/1.5/Using_Firefox_1.5_caching> WebKit: Shipping <https://webkit.org/blog/427/webkit-page-cache-i-the-basics/> Chrome Android: Shipping <https://groups.google.com/a/chromium.org/g/blink-dev/c/XS9VnYQoaQE> Since shipping on Android, we have made significant progress on the standardization front. The W3C TAG agreed <https://github.com/w3ctag/design-reviews/issues/628#issuecomment-837570345> to put BFCache considerations to their Design Principles guideline [pull <https://github.com/w3ctag/design-principles/pull/317>, pull <https://github.com/w3ctag/security-questionnaire/pull/128>], so all future APIs will have BFCache support explicitly specified. The BFCache interaction is now part of OWP Security Review as well. Compatibility - Low. To minimize compatibility risk, we continue to take the cautious approach of not caching pages when faced with uncertainty. Notable difference to the Android launch is unload handlers. For this release, we mitigated the risk by requiring the `BFCache-Opt-In: unload` response header specified by the page author to put pages with unload handlers to BFCache. We will not fire unload events when the page is BFCached. This was less of an issue on Android, since the unload handlers were not reliable on Android anyway. Desktop Chrome also didn’t guarantee the unload handler as well, but it is fired most of the time that many desktop websites rely on it. Again, we don’t BFCache such pages without the page authors’ consent in this release, but we might want to revisit this in the future (related: Firefox experiment <https://groups.google.com/a/mozilla.org/g/dev-platform/c/3pQRLPZnQgQ/m/dsA1w4iiAwAJ>). An enterprise policy for disabling back-forward cache is available. Ergonomics [unchanged] N/A. Websites don’t have to do anything (i.e. they will benefit from BFCache automatically). Activation [unchanged] Mostly N/A. Back-forward cache will work without any developer activation, but web developers can make their pages bfcache-friendly with some extra work. This would further increase the cache hit rate and improve the user experience. We have published guidance on https://web.dev/bfcache/. Also we'll be working with partners and interested parties on this. Security [new!] See these one-pagers - Privacy one-pager: BFCache Desktop: Privacy Explainer <https://docs.google.com/document/d/1x-Z291LQxHNJw5uyvkW6gjEAfgTmkm1zLv3whKjIyXs/edit> - Security one-pager: BFCache Desktop: Security Explainer <https://docs.google.com/document/d/1o7FZ58s8m1o5w9Bt-8vWNNbTDRidGV_BIrHaogU8d_M/edit> Is this feature fully tested by web-platform-tests <https://chromium.googlesource.com/chromium/src/+/master/docs/testing/web_platform_tests.md> ? We are actively making progress in the area. - List of issues to be covered by tests <https://github.com/whatwg/html/issues/5880> - Discussions on test framework APIs needed for BFCache tests are ongoing around WPT PR <https://github.com/web-platform-tests/wpt/pull/28950> and WPT RFCs (86, 88-91) <https://github.com/web-platform-tests/rfcs/pull/86#issuecomment-887783246> . - We have more draft WPTs <https://chromium-review.googlesource.com/c/chromium/src/+/2798554/> that will be ready for code review once the discussions on test framework is settled. Tracking bug https://crbug.com/1171298 Launch bug https://crbug.com/1196523 Link to entry on the feature dashboard <https://www.chromestatus.com/> https://chromestatus.com/feature/6279906713403392 -- You received this message because you are subscribed to the Google Groups "blink-dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+unsubscr...@chromium.org. To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAEy%2BVDLEkNUVt%2Bk4u6w0xzL-XHovRqtq%2BUx6atJdeo0-rBZaUw%40mail.gmail.com.