LGTM2

On 4/27/22 2:33 AM, Yoav Weiss wrote:
LGTM1

I'm excited about this work as it unlocks many potential wins in terms of loading performance. Interest from Mozilla as well as support from leading CDNs is also promising in terms of activation and usage. Thanks for working on this!!

On Wed, Apr 27, 2022 at 7:49 AM Daisuke Enomoto <[email protected]> wrote:

    Hi

    Any other questions or concerns?

    Thanks!

    On Thu, Apr 21, 2022 at 5:23 PM Kenichi Ishibashi
    <[email protected]> wrote:

        Hi Yoav,

        On Thu, Apr 21, 2022 at 3:26 PM Yoav Weiss
        <[email protected]> wrote:



            On Thu, Apr 21, 2022 at 4:13 AM Kenichi Ishibashi
            <[email protected]> wrote:


                        Contact emails

                [email protected], [email protected]


                        Explainer

                
https://github.com/bashi/early-hints-explainer/blob/main/explainer.md
                
<https://github.com/bashi/early-hints-explainer/blob/main/explainer.md>


                        Specification

                https://tools.ietf.org/html/rfc8297
                <https://tools.ietf.org/html/rfc8297>

                https://html.spec.whatwg.org/#early-hints


                        Design docs

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


                        Summary

                Support 103 Early Hints informational responses during
                top-level frame navigation. When a 103 response
                includes link headers Chromium tries to preload
                specified resources (including modulepreload) or
                preconnect to specified origins before the final
                response is received. This gives Web developers a way
                to optimize Core Web Vitals such as Largest Contentful
                Paint (LCP).



                        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/638
                <https://github.com/w3ctag/design-reviews/issues/638>


                        TAG review status

                Issues addressed


                        Risks


                        Interoperability and Compatibility

                Browsers may not understand a 103 response but they
                are expected
                
<https://www.ietf.org/archive/id/draft-ietf-httpbis-semantics-19.html#name-informational-1xx>to
                ignore 1xx responses if they don’t understand 1xx
                responses. Firefox is implementing 103 support.


                Proxies may not understand a 103 response. They may
                treat the 103 response as a part of the final response
                when the response is sent over HTTP/1.1. The problem
                is less likely to happen over HTTP/2 and HTTP/3 thanks
                to their frame format. Chromium only handles 103
                responses over HTTP/2 and HTTP/3.


                The HTML and Fetch standards have been updated to
                handle preload link headers in 103 responses for
                navigations (whatwg/html#7675
                <https://github.com/whatwg/html/pull/7675>,
                whatwg/fetch#1404
                <https://github.com/whatwg/fetch/pull/1404>). For
                preconnect there are ongoing efforts to specify the
                behavior. See “Anticipated spec changes” section below
                for more information.


                Gecko: In development
                <https://bugzilla.mozilla.org/show_bug.cgi?id=1407355>.


            Can you ask for an official position?
            https://bit.ly/blink-signals

        I should have put the link to the official position. They said
        it's worth prototyping
        <https://github.com/mozilla/standards-positions/issues/134> and
        IIUC it's under development.


                WebKit: No signal
                
<https://lists.webkit.org/pipermail/webkit-dev/2021-May/031861.html>.


                Web developers: Positive. Positive interest and intent
                of support by popular CDNs (Fastly
                
<https://www.fastly.com/blog/faster-websites-early-priority-hints>,
                Cloudflare
                <https://blog.cloudflare.com/early-hints/>). We've
                been collaborating with partners to evaluate the
                impact of Early Hints and we observed significant
                improvements on page loading metrics such as FCP.



                Ergonomics

                The primary usage of this feature is to send link
                headers to preload resources or preconnect to servers
                to improve page load performance. Due to potential
                security concerns Chromium only handles the first 103
                response for the top-frame navigation.


            That restriction is specified, right? AFAICT, "process
            early hints headers
            
<https://html.spec.whatwg.org/multipage/semantics.html#process-early-hint-headers>"
            is only called from "process a navigate response
            
<https://html.spec.whatwg.org/multipage/browsing-the-web.html#navigating-across-documents:process-early-hint-headers>".


        Yes, you're right. Sorry for the confusion. Chromium has these
        restrictions to follow the specification.

                See this document
                
<https://chromium.googlesource.com/chromium/src/+/master/docs/early-hints.md>for
                details of restrictions. These restrictions may be
                relaxed in the future.



                        Activation

                Popular HTTP servers and CDNs provide configurations
                or options to send Early Hints responses.



                Security

                Request mode
                <https://fetch.spec.whatwg.org/#concept-request-mode>and
                credentials mode
                
<https://fetch.spec.whatwg.org/#concept-request-credentials-mode>are
                calculated the same as normal preload and preconnect.
                Preloads triggered by a 103 response follow policies
                specified in the same 103 response. Chromium only
                handles the first 103 response and ignores following
                103 responses to avoid contradiction policies between
                these responses and the final response. Chromium
                doesn’t use preloaded resources triggered by a 103
                response when there are conflicting policies between a
                103 response and the final response. See the security
                considerations section
                
<https://docs.google.com/document/d/1gCh_CnfrJq_VL7aGoq6skc7sn4yn5pKsM0gkHe5B9go/edit#heading=h.fhq04xt0tah6>of
                the design doc for more information.


            Is that specified?

        Yes. These behaviors are specified in "process a navigate
        fetch
        
<https://html.spec.whatwg.org/multipage/browsing-the-web.html#process-a-navigate-fetch>"
        and "process early hint headers
        
<https://html.spec.whatwg.org/multipage/semantics.html#process-early-hint-headers>".



                        WebView application risks

                We don’t expect WebView specific problems with this
                feature.



                        Debuggability

                If a resource is preloaded by Early Hints, the
                corresponding PerformanceResourceTiming object reports
                that its initiatorType is "early-hints".


                When the document doesn’t use resources preloaded by
                Early Hints within a few seconds from the window’s
                load event Chromium will show warning messages (this
                is under review now).


                DevTools lack Early Hints support and we consider
                adding Early Hints support in DevTools in the future.
                In the meanwhile developers can use NetLog
                
<https://www.chromium.org/for-testers/providing-network-details/>,
                WebPageTest, or network protocol analyzers such as
                Wireshark for debugging.


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

                Yes
                
<https://github.com/web-platform-tests/wpt/tree/master/loading/early-hints>


                        Flag name

                EarlyHintsPreloadForNavigation


                        Requires code in //chrome?

                False


                        Tracking bug

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


                        Launch bug

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


                        Sample links

                https://early-hints.fastlylabs.com/
                <https://early-hints.fastlylabs.com/>


                        Estimated milestones

                We would like to ship this feature in M103.


                        Anticipated spec changes

                Historically preconnect hasn’t been specified well
                (whatwg/html#4224
                <https://github.com/whatwg/html/issues/4224>). There
                are ongoing efforts to specify the behavior. For
                example whatwg/html#7814
                <https://github.com/whatwg/html/pull/7814>specified
                the behavior of <link rel=preconnect>.
                whatwg/html#7835
                <https://github.com/whatwg/html/pull/7835>will specify
                preconnect in link headers and it will cover 103
                responses.


Great to see those PRs have landed!



                        Link to entry on the Chrome Platform Status

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


                        Links to previous Intent discussions

                Intent to Experiment:
                
https://groups.google.com/u/1/a/chromium.org/g/blink-dev/c/xb_NHDS3twY
                
<https://groups.google.com/u/1/a/chromium.org/g/blink-dev/c/xb_NHDS3twY>



                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
                [email protected].
                To view this discussion on the web visit
                
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAPLXX-9MUr5cdGw_x7Gy6B3dxcmpVp9tnXL%2BY%3DDeEXoABNy3bA%40mail.gmail.com
                
<https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAPLXX-9MUr5cdGw_x7Gy6B3dxcmpVp9tnXL%2BY%3DDeEXoABNy3bA%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/CAL5BFfU3vO5hb3CXXt4mG6HCWPOF7tjCoqvrjOdbW2Q49uiSbw%40mail.gmail.com <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAL5BFfU3vO5hb3CXXt4mG6HCWPOF7tjCoqvrjOdbW2Q49uiSbw%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/8d74545b-dde0-49ce-197d-25ae8dfd4ec2%40chromium.org.

Reply via email to