Note: Experiments conducted using Chrome on Android suggest that on 4G, 97.5% of below-the-fold images that are lazy-loaded were fully loaded within 10ms of becoming visible. By fetching nearby images well before they become visible in the viewport, we maximize the chance they are already loaded by the time they become visible.Ĭompared to JavaScript lazy loading libraries, the thresholds for fetching images that scroll into view may be considered conservative. Those that are far below the device viewport are only fetched when the user scrolls near them.Ĭhromium's implementation of lazy loading tries to ensure that offscreen images are loaded early enough so that they have finished loading once the user scrolls near to them. Distance-from-viewport thresholdsĪll images that are above the fold-that is, immediately viewable without scrolling-load normally. It would likely be fetched with a high priority in this case anyway, so this combination should not really be needed nor used. Note that an image with loading="lazy" and fetchpriority="high" will still be delayed while it is off-screen, and then fetched with a high priority when it is nearly within the viewport. If you want to increase the fetch priority of an important image (for example the LCP image), then Fetch Priority should be used with fetchpriority="high". eager just implies the usual eager queueing browsers use by default. It does not imply that the image is loaded any quicker than another image without the loading="eager" attribute.īrowsers prioritize resources based on various heuristics, and the loading attribute just states when the image resource is queued, not how it is prioritized in that queue. The eager value is simply an instruction to load the image as usual, without delaying the load further if it is off-screen. Relationship between the loading attribute and fetch priority While this is the default, it can be useful to explicitly set this if your tooling automatically adds loading="lazy" if there is no explicit value, or if your linter complains if it is not explicitly set.Ĭaution: Images that are highly likely to be in-viewport, and in particular LCP images, should not be lazy-loaded. eager: Default loading behavior of the browser, which is the same as not including the attribute and means the image is loaded regardless of where it's located on the page.lazy: Defer loading of the resource until it reaches a calculated distance from the viewport.Here are the supported values for the loading attribute: You can use the loading attribute to completely defer the loading of offscreen images that are reached by scrolling: Images below the viewport are loaded with a lower priority, but they're still fetched as the page loads. The loading attributeĬhrome loads images at different priorities depending on where they're located with respect to the device viewport. Browser-level lazy loading also ensures that deferred loading of images still works even if JavaScript is disabled on the client. With lazy loading supported directly by the browser, however, there's no need for an external library. Using scroll, resize, or orientationchange event handlersĮither option can let developers include lazy loading functionality, and many developers have built third-party libraries to provide abstractions that are even easier to use.Previously, there were two ways to defer the loading of off-screen images: At the 90th percentile, sites send over 5 MB of images on desktop and mobile. Why browser-level lazy loading?Īccording to the HTTP Archive, images are the most requested asset type for most websites and usually take up more bandwidth than any other resource. Browsers that do not support the loading attribute simply ignore it without side effects.
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |