On 11/1/23 9:59 AM, Liviu Tinta wrote:


        Contact emails

dome...@chromium.org, jbro...@chromium.org, liviuti...@chromium.org


        Explainer

https://github.com/WICG/nav-speculation/blob/main/no-vary-search.md


        Specification

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).


        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


        TAG review status

Positive.


        Chromium Trial Name

NoVarySearchPrefetch


        Link to origin trial feedback summary

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


        Risks



        Interoperability and Compatibility



/Gecko/: No signal (https://github.com/mozilla/standards-positions/issues/717)

/WebKit/: No signal (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). 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



        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


        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


        Links to previous Intent discussions

Intent to prototype: 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 Intent to Extend Experiment: 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. 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/8740e1f5-3d39-476f-987e-96cb8225446e%40chromium.org.

Reply via email to