0

EarlyHints: Add markdown file about 103 Early Hints

Bug: 1093693
Change-Id: I6f6f08fcbf1ae2de006fbb2b8c15a89989c30ea3
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2462982
Commit-Queue: Hiroki Nakagawa <nhiroki@chromium.org>
Reviewed-by: Kinuko Yasuda <kinuko@chromium.org>
Cr-Commit-Position: refs/heads/master@{#817784}
This commit is contained in:
Hiroki Nakagawa
2020-10-16 02:46:56 +00:00
committed by Commit Bot
parent 131ad72307
commit 0c9ee9f9e5

78
docs/early-hints.md Normal file

@ -0,0 +1,78 @@
# 103 Early Hints
Contact: early-hints-experiment@chromium.org
[103 Early Hints](https://httpwg.org/specs/rfc8297.html) is the new HTTP status
code used for preloading subresources earlier. In general, browsers cannot
preload subresources until the main response is served, as resources to be
preloaded are listed on headers or `<meta>` in the main response. Early Hints
will enable browsers to start preloading before the main response is served.
In addition, this can be used with other
[Resource Hints](https://w3c.github.io/resource-hints/) APIs like preconnect.
As of version 87, Chrome doesn't support Early Hints yet, but is going to run an
open experiment to evaluate the effectiveness of Early Hints. This does NOT give
you the real benefit yet, but will help us and the community to quantify the
potential benefit of the feature.
## How To Contribute to the Measurement
Chrome landed code to record the time between when the hints are received to
when the real navigation responses are received as of version 85, and this will
help us learn how much benefit this may bring.
Note that this timing information will be recorded only for the users who
opted-in to help Chrome gather usage statistics. See the
[Google Chrome Privacy Whitepaper](https://www.google.com/chrome/privacy/whitepaper.html#usagestats)
for details.
In order to gather this data, we will need sites to start sending Early Hints
status code (103), so that Chrome can record the timing information for the
hints for the navigation.
Note that not all browsers may handle Early Hints status code gracefully. We are
collaborating with Fastly on the timing to run this measurement, and they
collect breakage reports here: https://early-hints.fastlylabs.com/.
Once enough data is collected, we plan to publish our conclusions and the
learnings from the experiments with the aggregated stats publicly. Upon requests
we may also share the per-site metrics with the sites who have participated.
## Metrics
This section is mainly written for Chromium developers.
Chrome will record the following metrics. These intervals indicate how much
earlier we could start preloading with Early Hints. For example, we could
calculate the ratio of "the interval between request start and response start"
to "the interval between request start and Early Hints" to see the ratio of
speed-up.
### UMA
These are recorded under PageLoad.Experimental.EarlyHints UMA event.
- **FirstRequestStartToEarlyHints**: The interval between when the first HTTP
request is sent and when the headers of the Early Hints response is received
in reply to the request for the main resource of a main frame navigation.
- **FinalRequestStartToEarlyHints**: The interval between when the final HTTP
request is sent and when the headers of the Early Hints response is received
in reply to the request for the main resource of a main frame navigation.
- **EarlyHintsToFinalResponseStart**: The interval between when the headers of
the Early Hints response is received in reply to the final HTTP request and
when the headers of the final HTTP response is received for the main resource
of a main frame navigation.
### UKM
These are recorded under the NavigationTiming UKM event.
- **EarlyHintsForFirstRequest**: The time relative to navigation start that the
headers of the Early Hints response are received in reply to the first HTTP
request for the main resource of a main frame navigation.
- **EarlyHintsForFinalRequest**: The time relative to navigation start that the
headers of the Early Hints response are received in reply to the final HTTP
request for the main resource of a main frame navigation.
- **FinalResponseStart**: The time relative to navigation start that the headers
of the final HTTP response are received for the main resource of a main frame
navigation.