Comparing LCP images with lazy-loading and fetchpriority=high

Compare these:

Test Case LCP-TTFB
Plain LCP image 139.9 ms
Lazy-loaded LCP image 159.4 ms
Lazy-loaded LCP image with fetchpriority=high attribute 150.4 ms
LCP image with fetchpriority=high attribute 124.5 ms
LCP image with fetchpriority=high preload link 126.5 ms
Lazy-loaded LCP image with fetchpriority=high preload link 129.0 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 25 requests using the following command:

npm run research -- benchmark-web-vitals -n 25 -f urls.txt -o csv -m LCP-TTFB