Thanks Liviu.
I've spent some time today reviewing the explainer and spec, and find
the use cases compelling.
LGTM1 to ship. A non-blocking request would be to add the security &
privacy considerations from the explainer into the draft WICG spec (or
something similar).
(Also, kudos to all who contributed to the explainer - it's very
thorough and answered every question I had as I began to review in
depth. Excellent work.)
On 11/6/23 5:08 PM, Liviu Tinta wrote:
> Are there any open issues that would result in breaking changes,
after we ship?
There are 2 open issues related to No-Vary-Search:
https://github.com/WICG/nav-speculation/labels/no-vary-search. None of
the open issues requires modifying No-Vary-Search header. We are not
expecting breaking changes after we ship.
On Monday, November 6, 2023 at 1:43:06 PM UTC-5 Mike Taylor wrote:
On 11/1/23 9:59 AM, Liviu Tinta wrote:
Contact emails
dome...@chromium.org, jbro...@chromium.org
<mailto:jbro...@chromium.org>, liviuti...@chromium.org
<mailto:liviuti...@chromium.org>
Explainer
https://github.com/WICG/nav-speculation/blob/main/no-vary-search.md
<https://github.com/WICG/nav-speculation/blob/main/no-vary-search.md>
Specification
https://wicg.github.io/nav-speculation/no-vary-search.html
<https://wicg.github.io/nav-speculation/no-vary-search.html>
Summary
Enables prefetch to match even if URL query parameters change.
The No-Vary-Search HTTP response header declares that some or all
parts of a URL's query can be ignored for cache matching
purposes. It can declare that the order of query parameter keys
should not cause cache misses, that specific query parameters
should not cause cache misses or that only certain known query
parameters should cause cache misses. It could apply to multiple
caches, but this entry refers to support for prefetch cache.
We would like to ship "No-Vary-Search support in navigation
prefetch cache" together with "No-Vary-Search Hint for Prefetch
Speculation Rules"
(https://chromestatus.com/feature/4887338302308352
<https://chromestatus.com/feature/4887338302308352>).
Blink component
Internals>Preload
<https://bugs.chromium.org/p/chromium/issues/list?q=component:Internals%3EPreload>
TAG review
https://github.com/w3ctag/design-reviews/issues/797
<https://github.com/w3ctag/design-reviews/issues/797>
TAG review status
Positive.
Chromium Trial Name
NoVarySearchPrefetch
Link to origin trial feedback summary
https://github.com/WICG/nav-speculation/issues
<https://github.com/WICG/nav-speculation/issues>
Are there any open issues that would result in breaking changes,
after we ship?
Origin Trial documentation link
https://developer.chrome.com/origintrials/#/view_trial/4146689356901384193
<https://developer.chrome.com/origintrials/#/view_trial/4146689356901384193>
Risks
Interoperability and Compatibility
/Gecko/: No signal
(https://github.com/mozilla/standards-positions/issues/717
<https://github.com/mozilla/standards-positions/issues/717>)
/WebKit/: No signal
(https://github.com/WebKit/standards-positions/issues/106
<https://github.com/WebKit/standards-positions/issues/106>)
/Web developers/: 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/d/1GK92nCORW5vKd7LgGtTsgy35eqTV7P71l05pHsni8ok/edit#slide=id.g240fd6541f7_0_31>.
Ergonomics
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.
Activation
It will not be challenging for developers to take advantage of
this feature immediately.
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?
None
Debuggability
The website owner can debug the feature in DevTools by making
sure that, when navigating to a prefetched page by using a URL
that matches under No-Vary-Search conditions, the navigation
happens from the prefetch cache by looking at the Size column in
the Network tab. In case of success, when hovering over the Size
column in the Network tab of Dev Tools, they should see: "Served
from prefetch cache, resource size: yyyB".
No-Vary-Search header value for the prefetch is available on the
Network tab. Developers can also use the preloading panel
(https://crbug.com/1361483) which shows all ongoing preloads.
Will this feature be supported on all six Blink platforms
(Windows, Mac, Linux, Chrome OS, 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/prefetch/no-vary-search?label=experimental&label=master&aligned
<https://wpt.fyi/results/speculation-rules/prefetch/no-vary-search?label=experimental&label=master&aligned>
Flag name on chrome://flags
Finch feature name
NoVarySearchPrefetch
Requires code in //chrome?
False
Tracking bug
https://bugs.chromium.org/p/chromium/issues/detail?id=1378075
<https://bugs.chromium.org/p/chromium/issues/detail?id=1378075>
Non-OSS dependencies
Does the feature depend on any code or APIs outside the Chromium
open source repository and its open-source dependencies to function?
No.
Estimated milestones
Shipping on desktop 121
OriginTrial desktop last 120
OriginTrial desktop first 110
DevTrial on desktop 110
Shipping on Android 121
OriginTrial Android last 120
OriginTrial Android first 110
DevTrial on Android 110
Shipping on WebView 121
OriginTrial webView last 120
OriginTrial webView first 110
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/5071247189213184
<https://chromestatus.com/feature/5071247189213184>
Links to previous Intent discussions
Intent to prototype:
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAHaAqYKutrvgMxR%3DnfAQOfBHNJo9ifrmFRSbiE0heDyeW0uKJA%40mail.gmail.com
<https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAHaAqYKutrvgMxR%3DnfAQOfBHNJo9ifrmFRSbiE0heDyeW0uKJA%40mail.gmail.com>
Intent to Experiment:
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAHaAqYLGT%2BV3_u_oumjHCZD05RRYY5guMjz1vb7501sNF1CANg%40mail.gmail.com
<https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAHaAqYLGT%2BV3_u_oumjHCZD05RRYY5guMjz1vb7501sNF1CANg%40mail.gmail.com>
Intent to Extend Experiment:
https://groups.google.com/a/chromium.org/g/blink-dev/c/7oMlGWmVv2Q/m/B2PACBSnBgAJ
<https://groups.google.com/a/chromium.org/g/blink-dev/c/7oMlGWmVv2Q/m/B2PACBSnBgAJ>
--
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
<mailto:blink-dev+unsubscr...@chromium.org>.
To view this discussion on the web visit
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAHaAqYKL2psmkYpQQ6KjrM_41yt8f%3DvH_-m0%3DT4idWT4zSumHw%40mail.gmail.com
<https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAHaAqYKL2psmkYpQQ6KjrM_41yt8f%3DvH_-m0%3DT4idWT4zSumHw%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/b878e749-5d1a-4205-8612-3bd36db82fb3%40chromium.org.