friends-of-hyva/magento2-preload-images

Preload images above the fold to improve performance metrics.

1.0.0 2022-10-03 13:54 UTC

This package is auto-updated.

Last update: 2024-04-12 14:06:59 UTC


README

This module was built as an experiment during the MageUnConf Hackathon in Cologne, in September 2022.

The goal is to improve the user experience by loading images that are guaranteed to be displayed above the fold earlier.
The idea came out of interesting discussions with Tsvetan Stoychev and his experience working at Akamai on the frontend performance team.

Installation

Run the command

composer require friends-of-hyva/magento2-preload-images

Usage:

Import the FriendsOfHyva\PreloadImages\ViewModel\PreloadImages view model into your template and call the add() method, passing the image URL string as a parameter.

In Hyvä the ViewModelRegistry can be used, with Luma based themes the view model has to be passed into the template as a block argument using Layout XML.

Hyvä Example:

/** @var string $imageUrl */
$viewModels->require(PreloadImages::class)->add($imageUrl);

Details

The preloading is triggered in the browser by a Link header.

Take this screenshot of a PDP waterfall chart on slow 3G without preloading: Load times waterfall chart of a PDP without preloading

You can see the main product image wp13-orange_main_1.jpg begins loading shortly after the portia-capri.html document is received.
The browser requests the main product image after the css files used by the page.

Here is the screenshot of the same page with preloading: Load times waterfall chart of a PDP with preloading

With preloading, the browser requests the main product image before even the css files.

Be aware!

The feature this module provides is well in the range of micro-optimization, and if used without care can harm a websites SEO metrics.
If preloading an image improves the customer experience or a search engine ranking metric really depends on the site in question and the customer usage base.

Also, it will require a relatively high amount of visitors and careful monitoring to determine if it improves the situation for the majority of visitors.

License

Copyright 2022 Vinai Kopp & Hyvä Themes BV

The module is released under the BSD-3 Clause license.