LGTM1
On 6/5/24 11:21 PM, Liviu Tinta wrote:
Contact emails
dome...@chromium.org, jbro...@chromium.org, liviuti...@chromium.org
Explainer
https://github.com/WICG/nav-speculation/blob/main/triggers.md#no-vary-search-hint
<https://github.com/WICG/nav-speculation/blob/main/triggers.md#no-vary-search-hint>
Specification
https://wicg.github.io/nav-speculation/prerendering.html
<https://wicg.github.io/nav-speculation/prerendering.html>
Summary
Adds a hint to speculation rules that informs the navigation prerender
cache that the URL to be prerendered expects to receive the same
No-Vary-Search header in the response.
The hint is useful because prerenders that depend on No-Vary-Search to
match to navigations do not benefit the user if the navigation happens
before prerender headers return from the server. Using the hint, the
web browser will expect, but verify, that the No-Vary-Search hint
matches with the No-Vary-Search header. If the No-Vary-Search hint
does not match the No-Vary-Search header received then the web browser
will send a new request.
We would like to ship "No-Vary-Search Hint for Prerender Speculation
Rules" together with "No-Vary-Search support for prerender
<https://chromestatus.com/feature/5099218903760896>".
Blink component
Internals>Preload>Prerender
<https://bugs.chromium.org/p/chromium/issues/list?q=component:Internals%3EPreload%3EPrerender>
TAG review
Not applicable. The TAG has already given a negative opinion on the
overall complexity of speculation rules (
https://github.com/w3ctag/design-reviews/issues/721
<https://github.com/w3ctag/design-reviews/issues/721>), so we
anticipate it would not be a good use of their time to review
additions to the syntax. The addition itself is small and any
architectural questions about it would be covered under the general
closed speculation rules review.
TAG review status
Not applicable
Risks
Interoperability and Compatibility
None
Gecko: No signal
(https://github.com/mozilla/standards-positions/issues/620#issuecomment-1608195274
<https://github.com/mozilla/standards-positions/issues/620#issuecomment-1608195274>)
WebKit: No signal
(https://github.com/WebKit/standards-positions/issues/54#issuecomment-1608197504
<https://github.com/WebKit/standards-positions/issues/54#issuecomment-1608197504>)
Web developers: Below is the text from the I2S of the No-Vary-Search
on navigational prefetch, and we believe the same applies to
Prerendering. Google Search has been experimenting with No-Vary-Search
header / Speculation Rules "expects_no_vary_search". This
functionality helps Google Search to match prefetched content to the
next user navigation. Developers can use parameters in the prefetched
URL that are not needed when navigating to the actual link (e.g. the
source of the link click). The server can customize behavior using
these parameters without causing a cache miss in the browser.
"expects_no_vary_search" addition to Speculation Rules allows the
browser to completely handle the case where the user navigates to a
URL that is currently prefetched by waiting for the ongoing prefetch
instead of directly requesting the page from the server. Google Search
conducted experiments prefetching Search results pages from the search
box and other links that lead to another Search results page. There
was significant latency improvement for navigating to Search result
pages prefetched using No-Vary-Search header and "expects_no_vary_search".
Other signals: No-Vary-Search header has been discussed, together with
No-Vary-Search Hint for Prefetch Speculation Rules at Web Perf WG
meeting at TPAC 2023.
https://docs.google.com/presentation/u/1/d/1GK92nCORW5vKd7LgGtTsgy35eqTV7P71l05pHsni8ok/edit#slide=id.g240fd6541f7_0_31
<https://docs.google.com/presentation/u/1/d/1GK92nCORW5vKd7LgGtTsgy35eqTV7P71l05pHsni8ok/edit#slide=id.g240fd6541f7_0_31>
Ergonomics
(Text taken from Prefetch NVS I2S)
No-Vary-Search will be used in tandem with Speculation Rules
(https://wicg.github.io/nav-speculation/speculation-rules.html
<https://wicg.github.io/nav-speculation/speculation-rules.html>). The
default usage of No-Vary-Search will not make it hard for Chrome to
maintain good performance.
Security
See:https://github.com/WICG/nav-speculation/blob/main/no-vary-search-security-privacy-questionnaire.md
<https://github.com/WICG/nav-speculation/blob/main/no-vary-search-security-privacy-questionnaire.md>
WebView application risks
Does this intent deprecate or change behavior of existing APIs, such
that it has potentially high risk for Android WebView-based applications?
We are closely working with Android WebView team, and the broader
prerender feature is gated through new AwSettings API (currently
@RequiresOptIn) so there's zero risk that it will break existing
WebView apps.
Debuggability
None
Will this feature be supported on all six Blink platforms
(Windows, Mac, Linux, ChromeOS, Android, and Android WebView)?
Yes
Is this feature fully tested by web-platform-tests
<https://chromium.googlesource.com/chromium/src/+/main/docs/testing/web_platform_tests.md>?
Yes
https://wpt.fyi/results/speculation-rules/prerender?label=experimental&label=master&aligned
<https://wpt.fyi/results/speculation-rules/prerender?label=experimental&label=master&aligned>
(The test files starting with no-vary-search)
Flag name on chrome://flags
None
Finch feature name
Prerender2NoVarySearch
Requires code in //chrome?
False
Estimated milestones
Shipping on desktop
127
Shipping on Android
127
Shipping on WebView
127
Anticipated spec changes
Open questions about a feature may be a source of future web compat or
interop issues. Please list open issues (e.g. links to known github
issues in the project for the feature specification) whose resolution
may introduce web compat/interop risk (e.g., changing to naming or
structure of the API in a non-backward-compatible way).
None
Link to entry on the Chrome Platform Status
https://chromestatus.com/feature/5190922953555968?gate=5148879099265024
<https://chromestatus.com/feature/5190922953555968?gate=5148879099265024>
Links to previous Intent discussions
Intent to prototype:
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CA%2B7y87rgssbBecLSY5fz03ATcAAjgy%3DjY322w_2roQdsehP4Dg%40mail.gmail.com
<https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CA%2B7y87rgssbBecLSY5fz03ATcAAjgy%3DjY322w_2roQdsehP4Dg%40mail.gmail.com>
This intent message was generated by Chrome Platform Status
<https://chromestatus.com/>.
--
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/CAHaAqYJphk8wg8yLr-VFe2QJDZ4N%3D8Z%2BBAs9VL5scY-brTmRTg%40mail.gmail.com
<https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAHaAqYJphk8wg8yLr-VFe2QJDZ4N%3D8Z%2BBAs9VL5scY-brTmRTg%40mail.gmail.com?utm_medium=email&utm_source=footer>.
--
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/457ce01c-56ea-42a9-b9ef-1d84216ccd90%40chromium.org.