LGTM3

On 5/12/22 12:23 PM, Daniel Bratell wrote:

LGTM2

/Daniel

On 2022-05-12 10:40, Yoav Weiss wrote:
LGTM1

Thanks for the extra details. These results look amazing, so in my mind they significantly outweigh the risk of going first here.

On Thursday, May 12, 2022 at 4:12:19 AM UTC+2 Hiroki Nakagawa wrote:

    Let me share more details of the feedback.

    We worked directly with 11 external partners; 8 of them valued
    the opportunity offered by Prerendering.

      * Origin Trial results: One of the external partners, Ameba
        News (https://news.ameba.jp/) has tested out same-origin
        prerendering via the Origin Trial during April 11 - 17 (1
        week testing / around selected navigations / 2-3% of the
        traffic). While the site was already meeting CWV and good
        LCP, by adopting prerendering, the median LCP improved 2.7x
        (827ms to 302ms) and more importantly the P95 improved by 1.6
        seconds [2843ms to 1195ms] (i.e. Prerendered pages have more
        consistency in the performance).
      * Key challenges:
          o All participants identified "knowing what is safe to
            prerender / adapting a page to be safe" as a key
            challenge. We are exploring follow-ups to lower the bar.
          o DevTools support. We are following up with the devtools team.
          o 3P RUM tools to incorporate `activationStart` to
            correctly measure FCP / LCP. We will be guiding the RUMs
            for required changes.
          o CrUX to incorporate the prerendering impact. We are
            following up with the CrUX team.

    In addition, we worked with one internal partner who got great
    results (i.e. the 45% number shared earlier).

    Finally, we received the following feedback from 6 OT participants:

      * Difficulty: moderately easy (3), neither easy nor difficult
        (2), Slightly difficult (1)
      * Keep using: extremely likely (2), moderately likely (3),
        can't say which way (1)
      * Alternatives: none (2), fallback to prefetch (2)


    Thanks,
    Hiroki

    On Tue, May 10, 2022 at 10:42 PM Hiroki Nakagawa
    <[email protected]> wrote:

        Hi Yoav, thanks for your comments!

        On Tue, May 10, 2022 at 9:48 PM Yoav Weiss
        <[email protected]> wrote:



            On Fri, Apr 22, 2022 at 7:27 PM 'Angel Raposo' via
            blink-dev <[email protected]> wrote:

                Contact emails

                [email protected][email protected],
                [email protected], [email protected],
                [email protected]


                Explainer

                This feature:

                
https://github.com/WICG/nav-speculation/blob/main/same-origin-explainer.md
                
<https://github.com/WICG/nav-speculation/blob/main/same-origin-explainer.md>

                Larger project:
                https://github.com/WICG/nav-speculation/blob/main/README.md
                <https://github.com/WICG/nav-speculation/blob/main/README.md>


                        Specification

                https://wicg.github.io/nav-speculation/prerendering.html
                <https://wicg.github.io/nav-speculation/prerendering.html>


                        Design docs

                
https://docs.google.com/document/d/1P2VKCLpmnNm_cRAjUeE-bqLL0bslL_zKqiNeCzNom_w/edit?usp=sharing
                
<https://docs.google.com/document/d/1P2VKCLpmnNm_cRAjUeE-bqLL0bslL_zKqiNeCzNom_w/edit?usp=sharing>


                        Summary

                Prerendering is “pre”-rendering, it’s about
                pre-loading and rendering a Web page before the user
                actually navigates to it. The main goal of
                prerendering is to make the next page navigation
                faster, or ideally nearly instant.


                Sites can tell the user agents about which pages the
                user may likely visit, by asking to trigger a
                ‘prerendering’ for a particular URL (e.g. user is at
                page A and will likely navigate to page B next). Once
                the prerender is triggered, the browser pre-fetches
                the main resource, instantiates a hidden page, and
                processes the main resource to fetch and process more
                subresources.


                We would like to ship same-origin speculation rules
                prerendering. With this feature, Chrome will start
                prerendering high-confidence URL suggestions provided
                by the page using speculation rules. During the
                prerendering process, a page will process and
                construct the full DOM tree, including the execution
                of scripts (this differs from the prefetching
                resources using No-state Prefetch
                
<https://developers.google.com/web/updates/2018/07/nostate-prefetch>)


                This prerendering affects how the prerendered pages
                are processed. The website gets loaded before the
                navigation is committed, and the side-effects are
                delayed until activation (the actual navigation to
                the website was committed). The website can know that
                it is being prerendered (document.prerendering) and
                when it was activated (prerenderingchange event,
                performance.activationStart timing). These APIs have
                already been approved by the previous intent-to-ship
                for Omnibox prerendering
                
<https://docs.google.com/document/d/1GcB_oII6-3s24M_3ebcp5bzAtNNY5i_wh1c0jgJvv8k/edit>.


                Note that we are not shipping cross-origin
                speculation rules, which allows a web page to
                prerender another page under a different domain
                (external site). For details about our web exposed
                changes shipping plan, please consult this doc:
                Interoperability Roadmap for Shipping Prerender2
                Incrementally
                
<https://docs.google.com/document/d/1GenZDPbTzRyp038gh8A_ylIoVTfKt40MFyg7Ek_7L58/edit>.



                        Blink component

                Internals>Preload>Prerender
                
<https://bugs.chromium.org/p/chromium/issues/list?q=component:Internals%3EPreload%3EPrerender>


                        TAG review

                https://github.com/w3ctag/design-reviews/issues/667
                <https://github.com/w3ctag/design-reviews/issues/667>


                        TAG review status

                Closed


                        Risks


                        Interoperability and Compatibility


            https://github.com/WICG/nav-speculation/issues/160
            <https://github.com/WICG/nav-speculation/issues/160>
            seems like something we'd want to settle before shipping?


        I wonder if the issue is not blocking this I2S. Currently we
        support only the basic syntax like this
        
<https://github.com/web-platform-tests/wpt/blob/88cd60961f5cd877cf5083a8874a233f69ae72a2/speculation-rules/prerender/resources/utils.js#L19-L22>,
        and such advanced syntax is out of the scope. I think we can
        incrementally support them later without breaking the
        compatibility.

            Any other open issues that may impact the compat or
            interop risk here?


        We audited open issues that could potentially affect compat
        or interop and concluded they have no risks. This document
        
<https://docs.google.com/document/d/1eFY7RMoeG7Mdhon9yLs6hKSfi6DYrASBPM-31hWXPDg/edit?usp=sharing>
        summarizes the results.

            Also, is the opt-in
            <https://github.com/WICG/nav-speculation/blob/main/opt-in.md>
            part of this intent?


        This I2S doesn't cover the opt-in mechanism.

                Compatibility

                There are some use cases that will need to know
                whether a page is being prerendered by the user agent
                or navigated by the user, e.g. Ads and analytics are
                likely examples of this.To solve this challenge, this
                feature exposes `document.prerendering` which
                indicates if the page is prerendered or not. We
                understand that there’s always a risk of sites, that
                would benefit from using this API, not actually using
                it.


                We believe that this risk is tractable because:

                (1) triggering a prerender isn’t an entirely new
                behavior. E.g. Chrome used to have a prerendering
                feature a long while ago
                
<https://blog.chromium.org/2011/06/prerendering-in-chrome.html>triggered
                by URLs entered in the navigation bar

                (2) Similar behaviors are already present in other
                browsers, e.g. “Preload Top Hit” feature in Safari


                To give more flexibility to web authors (site owners)
                who want to implement speculation rules, we are
                already including a header to network requests as
                `Purpose: prefetch` so that origin servers can
                identify requests for prerendered pages and decide
                how to handle them. A new header will be included to
                provide a CORS safelist alternative using 
                `Sec-purpose: prefetch;prerender`
                https://fetch.spec.whatwg.org/#cors-safelisted-request-header
                <https://fetch.spec.whatwg.org/#cors-safelisted-request-header>

                https://chromestatus.com/feature/6247959677108224
                <https://chromestatus.com/feature/6247959677108224>


                There’s also a future risk of the speculation rules
                specification changing
                
<https://github.com/WICG/nav-speculation/blob/main/triggers.md#rules>:
                including new rules, modifying previous ones, etc. We
                do not expect to make backward-incompatible changes
                to the speculation rules format, but if we did, the
                user agent wouldn’t be able to understand the rules
                (which would define them as null), opting out of the
                prerender which wouldn’t cause any visible effect
                (apart from a slower loading time for the next
                navigated page as it won’t be prerendered).


                We are working closely on the tracker
                https://github.com/WICG/nav-speculation/issues
                <https://github.com/WICG/nav-speculation/issues>which
                contains currently 8 non-blocking open discussions
                related with compatibility (1 of them covering
                cross-origin which we are not shipping with this I2S)


                Interoperability

                We believe that some browsers already have
                prerendering implementations which are not
                well-specified and may differ from each other. Our
                vision is to produce a specification that can help
                improve interoperability. There is a risk that other
                browsers do not converge on a prerendering standard.
                The danger here is that different browsers have
                different ways to trigger a prerendered page, and
                prerendered pages behave differently in different
                browsers.


                Prerendering is a web-visible behavior, since it
                involves fetching the page and executing its scripts.


                Prerendering can depend on UA-specific heuristics.
                For example, the browser might decide to act on a
                hint to prerender based on the system load, and the
                presence of other prerenders. We do not intend to
                codify heuristics in the specification. A conforming
                browser might simply ignore all hints to prerender a
                page.


                Discussions around speculation rules and the broader
                prerender feature has already been initiated with
                different players:


                Gecko: Some informal positive discussion with Gecko
                engineers on the HTML Standard issue tracker
                
<https://github.com/whatwg/html/issues/7533#issuecomment-1022051187>and
                in the HTML triage call
                
<https://github.com/whatwg/html/issues/7488#issuecomment-1029510684>;
                formal positions request here:
                https://github.com/mozilla/standards-positions/issues/613
                <https://github.com/mozilla/standards-positions/issues/613>


                WebKit: WebKit already ships URL-bar triggered
                prerendering, but not any APIs for letting pages know
                about it, and it's unclear what strategy they are
                using to prohibit disruptive behaviors for
                prerendered pages. We have reached out for a formal
                positions request here in the hopes of moving toward
                interoperability:
                
https://lists.webkit.org/pipermail/webkit-dev/2022-February/032113.html
                
<https://lists.webkit.org/pipermail/webkit-dev/2022-February/032113.html>


                Web developers: We’ve already received positive
                feedback from initial web developers testing the
                feature. See
                https://github.com/WICG/proposals/issues/2
                <https://github.com/WICG/proposals/issues/2>for
                positive sentiments on speculation rules triggered by
                different partners who are willing to implement the
                feature into their sites.


            It'd be great if you could share more details about the
            origin trial, feedback we received and if possible, user
            benefits from OT participants trying this out.


        We had experiments with several internal/external partners.
        One of the experiments showed that the feature can reduce the
        latency on their service by 45%. Other experiments also
        showed promising impacts on the CWV metrics. According to
        feedback from the partners, the lack of DevTools support for
        prerendering was challenging. As the "Debuggability" section
        on this I2S mentions, we've actively been developing the
        DevTools support, so the situation should be mitigated soon.
        Overall, they were supportive of the feature and interested
        in using it on production.


                Other signals: There’s a public request for feedback
                published
                (https://web.dev/speculative-prerendering/#feedback-welcome
                <https://web.dev/speculative-prerendering/#feedback-welcome>)
                which is currently being managed through:
                https://github.com/WICG/nav-speculation/issues
                <https://github.com/WICG/nav-speculation/issues>


                        Ergonomics

                IT admins can disable Prerendering via the existing
                group policy "NetworkPredictionOptions"


                This feature will be used in combination with the
                APIs which already shipped as part of omnibox
                prerendering: document.prerendering,
                prerenderingchange event, and
                performanceEntry.activationStart timing.


                        Activation

                Developer needs to opt-in by defining the speculation
                rules on the page. Please notice that this doesn’t
                ensure the prerender of the next navigation as
                speculation rules are only used as suggestions to
                improve the heuristics of the user agent choosing
                which page to prerender. As hints, speculation rules
                may be followed by the browser (prerendering the
                page) or ignored completely (e.g. lowend device
                without resources to prerender the page).


                        Security

                This feature is the first use of the Multiple-Page
                Architecture, which is a significant change to
                Chromium's internals. Both MPArch and this feature in
                particular underwent significant security review. See
                the design doc for more details.From a web-exposed
                perspective, the security and privacy concerns are
                smaller, because this feature is restricted to the
                same-origin case only.



                        WebView application risks

                This feature doesn’t deprecate or change behavior of
                existing APIs directly.



                        Debuggability

                We are actively talking to the DevTools team about
                adding general Prerender support to it [metabug
                
<https://bugs.chromium.org/p/chromium/issues/detail?id=1217029>].
                The current MVP is to reveal the prerendered page
                status in the panel so web developers can know if
                they finished successfully or not.


                We also have a long term plan
                
<https://docs.google.com/document/d/1nK1TqDMeE0dgl4TGk9Ne4vzKzgv7nkfgmAVbvR6TtM0/edit>to
                show different debugging status messages in DevTools
                but there's no specific messages currently discussed
                that are focused only on speculation rules, only the
                "generic" ones at prerender feature level. Your
                thoughts are welcome if specific debugging logs
                regarding speculation rules would be required.



                        Is this feature fully tested by
                        web-platform-tests
                        
<https://chromium.googlesource.com/chromium/src/+/master/docs/testing/web_platform_tests.md>?

                We have written a lot of web platform tests using
                speculation rules as the trigger:

                
https://wpt.fyi/results/speculation-rules/prerender?label=experimental&label=master&aligned
                
<https://wpt.fyi/results/speculation-rules/prerender?label=experimental&label=master&aligned>

                (Currently Chromium tests this using
                VirtualTestSuites [cs
                
<https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/web_tests/virtual/prerender/README.md>]
                instead of EnableExperimentalWebPlatformFeatures, so
                the tests are not green on wpt.fyi.)


                        Flag name

                Prerender2


                        Requires code in //chrome?

                False


                        Tracking bug

                https://crbug.com/1295143 <https://crbug.com/1295143>


                        Launch bug

                https://crbug.com/1316557 <https://crbug.com/1316557>


                        Sample links

                For a demo of prerendering generally, and its effect
                on websites, https://prerender2-specrules.glitch.me/
                <https://prerender2-specrules.glitch.me/>shows it
                triggered by speculation rules.


                        Estimated milestones


                OriginTrial android last

                        

                102

                OriginTrial android first

                        

                94

                DevTrial on android

                        

                94




                        Anticipated spec changes

                There are currently 8 open discussions
                
<https://github.com/WICG/nav-speculation/issues?q=is%3Aissue+is%3Aopen+label%3A%22prerendering%22+label%3A%22affects-compat%22+>which
                could potentially modify the API in the future.
                Having said that, half of them were opened in
                2020/2021 which means they have been in discussions
                for a long term and we don’t expect immediate changes
                required in the short term.


                We have reviewed all the current pending discussions
                
<https://docs.google.com/document/d/1eFY7RMoeG7Mdhon9yLs6hKSfi6DYrASBPM-31hWXPDg/edit>and
                we believe they won’t cause compatibility issues as
                most of them will be resolved with the initial
                launch. We’ll keep working on the tracker and
                updating our roadmap doc
                
<https://docs.google.com/document/d/1GenZDPbTzRyp038gh8A_ylIoVTfKt40MFyg7Ek_7L58/edit?usp=sharing>if
                we detect any changes.


                        Link to entry on the Chrome Platform Status

                https://chromestatus.com/feature/5355965538893824
                <https://chromestatus.com/feature/5355965538893824>


                        Links to previous Intent discussions

                Intent to Experiment:
                
https://groups.google.com/a/chromium.org/g/blink-dev/c/3JwGNnqH3QI/m/Ey103Q-yAQAJ
                
<https://groups.google.com/a/chromium.org/g/blink-dev/c/3JwGNnqH3QI/m/Ey103Q-yAQAJ>

                Intent to Extend Experiment:
                
https://groups.google.com/a/chromium.org/g/blink-dev/c/Kpp6uJJRrqI/m/GTo_aF0qEQAJ
                
<https://groups.google.com/a/chromium.org/g/blink-dev/c/Kpp6uJJRrqI/m/GTo_aF0qEQAJ>



                This intent message was generated by Chrome Platform
                Status <https://chromestatus.com/>.

-- Angel Raposo  |TPM Prerender (20% role) 
                |[email protected]  | Google Japan G.K.


                This email may be confidential or privileged.  If you
                received this communication by mistake, please don't
                forward it to anyone else, please erase all copies
                and attachments, and please let me know that it went
                to the wrong person. Thanks.

                The above terms reflect a potential business
                arrangement, are provided solely as a basis for
                further discussion, and are not intended to be and do
                not constitute a legally binding obligation.  No
                legally binding obligations will be created, implied,
                or inferred until an agreement in final form is
                executed in writing by all parties involved.

                
もし、このメッセージが誤って貴殿に送信されたと思われる場合には、機密情報を含んでいる可能性もありますので、どなたにも転送せず、添付ファイルも含めて削除していただくとともに、発信者にその旨をお伝えいただきますようお願いいたします。
-- 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
                [email protected]
                <mailto:[email protected]>.
                To view this discussion on the web visit
                
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAA9vRHxK26yKNbkcL3uWGcGHGDEZpQBSBy3Avbp%2BqAV4iTpaOg%40mail.gmail.com
                
<https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAA9vRHxK26yKNbkcL3uWGcGHGDEZpQBSBy3Avbp%2BqAV4iTpaOg%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 [email protected]. To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/95894ef5-83cb-4906-a8c8-fad0b0e71f4fn%40chromium.org <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/95894ef5-83cb-4906-a8c8-fad0b0e71f4fn%40chromium.org?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 [email protected]. To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/fc783e64-8244-a0d8-263a-9e53944ec093%40gmail.com <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/fc783e64-8244-a0d8-263a-9e53944ec093%40gmail.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 [email protected].
To view this discussion on the web visit 
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/1ea02f93-e49b-f6f0-ba62-1391ba869899%40chromium.org.

Reply via email to