Comparing LCP images with lazy-loading and fetchpriority=high

Compare the median TTFB-LCP for these test cases:

Test Case Broadband Fast 4G
Plain LCP image 323.4 ms 742.3 ms
Lazy-loaded LCP image 317.6 ms 741.3 ms
Lazy-loaded LCP image with fetchpriority=high attribute 318.7 ms 742.1 ms
LCP image with fetchpriority=high attribute 288.3 ms 542.7 ms
LCP image with fetchpriority=high preload link 289.0 ms 545.1 ms
Lazy-loaded LCP image with fetchpriority=high preload link 288.1 ms 542.7 ms

Note that the pages include five small images in the header because Chrome Resource Priorities and Scheduling automatically loads the first 5 images larger than 10,000px² with high priority, so making the LCP image the 6th image ensures that we can see the effect of preloading.

The LCP-TTFB metric comes from the benchmark-web-vitals command in the GoogleChromeLabs/wpp-analysis repo. It reflects the LCP time subtracting the TTFB. The value is the median over 100 requests with broadband network emulation using the following command:

npm run research -- benchmark-web-vitals --number=100 --network-conditions=broadband --file=urls.txt --output=csv --metrics=LCP-TTFB
And 100 requests with Fast 45 Network Emulation:
npm run research -- benchmark-web-vitals --number=100 --network-conditions="Fast 4G" --file=urls.txt --output=csv --metrics=LCP-TTFB