Hello,

During the summer of 2023 we tested both new API's (Header and Document 
rules) and compared it to a CDN implementation without the original trial. 

*(The Origin Trial was activated on my site Scalemates, and speculation 
rules were configured and delivered via Akamai.)*

*Summary: *

- Document Rules:  This is a game changer and makes implementations not 
only easier but increases the probability that next navigations will see 
the expected performance benefits. It removes the speculation and gambling 
aspects of the API.
- When using a CDN, the Header approach makes it easier to implement and 
avoids complicating caching and purging.

A bit more detail on each API:

*A) Feedback on HTTP header version:*

Although both work as expected, for a CDN based integration the HTTP header 
version comes with several advantages.


*CDN Integration:• *Easier integration at the Edge
*• *No overhead/eco impact transforming HTML


*CDN Cache efficiency:• *Allows A/B testing without poisoning the cache
*• *Purging speculation rules does not required purging all HTML pages


*Edge logic without delaying HTML:• *Serve different speculation rules 
based on geo/connection/user/…
*• *Speculation rules delay (eg. lookup popular next navigations in RUM 
data) not in critical path

*B) Feedback on Document rules:*

Although both work as expected, the document rules makes the API an order 
of magnitude better.


*Implementation:• *Easier
*• *Generic speculation rules possible
*• *Rules are more static
*• *Reduced risk of “speculation misses”
*• *No more gambling


*No analytics data required to speculate:• *Works for long tail links
*• *Works for personalised links
*• *Works for new links/stops for removed links
*• *No A/B testing blind spots
*• *No cross internationalisation gaps/issues


Kind regards,
Tim Vereecke

Performance Specialist Akamai

On Wednesday, May 24, 2023 at 9:30:25 PM UTC+2 Jeremy Roman wrote:

Contact emails

jbr...@chromium.org, adit...@chromium.org, isab...@google.com, 
dom...@chromium.org, kenji...@chromium.org

Explainer

https://github.com/WICG/nav-speculation/blob/main/triggers.md

https://github.com/w3c/resource-timing/issues/332

Specification

https://wicg.github.io/nav-speculation/speculation-rules.html

Summary

Three enhancements to preloading, under a combined experiment:

An extension to speculation rules syntax that lets the browser obtain URLs 
for speculation from link elements in a page. They may include criteria 
which restrict which of these links can be used.

Currently developers can only specify speculation rules using inline script 
tags.  The proposed feature provides an alternative through the "Speculation
-Rules" header. Its value must be a URL to a text resource with 
"application/speculationrules+json" MIME type. The resource's rules will be 
added to the document's rule set.

Expose information about how a resource was delivered. For example, 
resources which were delivered from the cache (currently exposed through 
transferSize) and navigations which were prefetched by the previous page 
are useful to identify.


An overview of this experiment remains available here:

https://github.com/jeremyroman/nav-speculation
/blob/experiment-summary/chrome-2023q1-experiment-overview.md

See also the previous intent: 
https://groups.google.com/a/chromium.org/g/blink-dev/c/3-0rLTZePzc/m/VNHWAdAGDQAJ

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/721

TAG review status

Complete at this time. TAG has reservations about whether the use cases of 
this feature justify its complexity, as compared to a simpler solution 
which would address some but not all of the use cases.

Risks

Interoperability and Compatibility

Because authors cannot rely on speculation rules being evaluated (or 
preloading generally), applications which use them should function 
correctly in other browsers and should continue to function correctly were 
the feature to be deprecated. Of course, ideally other browsers do find it 
compelling to implement this feature.


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

WebKit: No signal (https://github.com/WebKit/standards-positions/issues/54)

Web developers: We built these enhancements specifically upon requests from 
partners that found the current speculation rules too hard to integrate 
into their sites, and have at least one partner lined up to participate in 
the origin trial.

Other signals:

Activation

Some developers might not be immediately aware of which URLs they can 
preload without side effects. This risk is reduced if they primarily use 
the feature for same-origin URL patterns they are familiar with.


Security

See https://wicg.github.io/nav-speculation/speculation-rules
.html#security-considerations.


WebView application risks

None that are specifically anticipated.


Justification for extension


During the experiment, we have made improvements to these features, fixed 
bugs, and improved developer tools to make them easier to debug. We have 
some data from use of this showing benefits, but want to both make further 
improvements to our implementation and give more time for partners to 
engage (there were unforeseen delays in at least one instance).

Ongoing technical constraints

At this time the constraints are believed to be minimal.


Debuggability

Preloading and speculation rules fetches which occur are both visible in 
the Network panel and the in-development Preloading panel. Console warnings 
are logged when several types of issues are encountered.

See, e.g.

https://bugs.chromium.org/p/chromium/issues/detail?id=1384419


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

Flag name

Origin trial name "SpeculationRulesPrefetchFuture", spanning multiple 
underlying feature flags.

Requires code in //chrome?

False

Tracking bug

https://bugs.chromium.org/p/chromium/issues/detail?id=1371522

https://bugs.chromium.org/p/chromium/issues/detail?id=1366940

https://bugs.chromium.org/p/chromium/issues/detail?id=1358591

Estimated milestones

110-118 (inclusive) on all Chrome platforms

if extension for milestones 116-118 (inclusive) is granted

Link to entry on the Chrome Platform Status

https://chromestatus.com/feature/5112150536749056

https://chromestatus.com/feature/5069400512659456

https://chromestatus.com/feature/6347141115543552

Links to previous Intent discussions

Intents to prototype:

https://groups.google.com/a/chromium.org/d/msgid/blink-dev
/CA%2B5JZsPqZakqnGx2zgreGEfRCJ1Xrr16cL2gcqGF7577dFhvsw%40mail.gmail.com

https://groups.google.com/a/chromium.org/d/msgid/blink-dev
/CAC2TYLVmZ%2BC%3Dct9VkfMi86RmypyfDOc14o1O4%3DiynRy%2B3rnyxg%40mail.gmail.com

https://groups.google.com/a/chromium.org/d/msgid/blink-dev
/CACuR13cZU8%3D7Ka3SWSf4E2dgDuhRRBRt_fGgDeC6d%3DqHP%3Durrw%40mail.gmail.com

https://groups.google.com/a/chromium.org/g/blink-dev/c/3-0rLTZePzc/m/VNHWAdAGDQAJ

-- 
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/0869561f-0b47-47a3-a3af-2ddfb4c10681n%40chromium.org.

Reply via email to