commit | 2fd4b6efce9465948fadc2fcf5b110d4bd4f4035 | [log] [tgz] |
---|---|---|
author | Domenic Denicola <domenic@chromium.org> | Mon Dec 02 09:00:14 2024 |
committer | Chromium LUCI CQ <chromium-scoped@luci-project-accounts.iam.gserviceaccount.com> | Mon Dec 02 09:00:14 2024 |
tree | 826cc1c2d94a68018ea641eb26c816664d1f99cc | |
parent | bc417ea6835b1dec4f36721a9e3908a40964cb70 [diff] |
Ship PrefetchFollowsNormalCacheSemantics This removes the "5-minute rule" for prefetches, where they ignore normal HTTP cache semantics for 5 minutes and instead stay cached in the HTTP cache. This applies to <link rel=prefetch>, NoStatePrefetch (i.e. <link rel=prerender>), and speculation rules prefetch. Note that for speculation rules prefetch, because there is the separate in-memory speculation rules prefetch cache, 2xx responses without caching headers will still be stored in that in-memory cache. They just won't be HTTP cached, in a way that was counter to the website's expressed preferences. Shipping this was approved back in May 2023, with an accompanying Finch study to check for regressions [1]. However, we forgot to actually change the default. This is of new urgency now because of the impact on speculation rules prefetch, which is is causing web developer pain. A web platform test is included for the specific painful scenario, which fails before this change and passes afterward. Most of this CL consists of test updates: many of our tests relied on not needing caching headers to make <link rel=prefetch> or <link rel=prerender> work, and so do things like assume there will never be a second request to those URLs. The general fix is to apply caching headers to the resources in question, as that represents the intended real-world usage of <link rel=prefetch>. (And, to a lesser extent, the nonstandard and hopefully-one-day-removed <link rel=prerender>.) Notably, the WPT prefetch-document.html was failing in all browsers before this, including in Firefox which has a highly spec-conformant implementation. It should now be passing. PrerendererImplBrowserTestPrefetchAhead.PrefetchSuccessPrefetchMatchResolverTimeoutPrerenderFailure was disabled, since it appears to never have been working as expected, with the HTTP caching hiding the real problem. Issue 372851198 tracks fixing that test. Tests specifically for the 5-minute rule were deleted. [1]: https://groups.google.com/a/chromium.org/g/blink-dev/c/Zdo71C0k9C0 Bug: 40232065, 381099745, 356624471, 372851198 Change-Id: I7d42c43efd89486587d8b7fc8ddd4412b31ef0bf Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6056830 Reviewed-by: Rakina Zata Amni <rakina@chromium.org> Commit-Queue: Domenic Denicola <domenic@chromium.org> Reviewed-by: Adam Rice <ricea@chromium.org> Reviewed-by: Hiroki Nakagawa <nhiroki@chromium.org> Cr-Commit-Position: refs/heads/main@{#1390213}
Chromium is an open-source browser project that aims to build a safer, faster, and more stable way for all users to experience the web.
The project's web site is https://www.chromium.org.
To check out the source code locally, don't use git clone
! Instead, follow the instructions on how to get the code.
Documentation in the source is rooted in docs/README.md.
Learn how to Get Around the Chromium Source Code Directory Structure.
For historical reasons, there are some small top level directories. Now the guidance is that new top level directories are for product (e.g. Chrome, Android WebView, Ash). Even if these products have multiple executables, the code should be in subdirectories of the product.
If you found a bug, please file it at https://crbug.com/new.