Giter VIP home page Giter VIP logo

magento2-preload-images's Introduction

Preload Images via HTTP Link response header

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.

magento2-preload-images's People

Contributors

vinai avatar septoctobre avatar

Stargazers

Luke Banka avatar Dariusz Maciejewski avatar dadolun avatar kenneth avatar Gonzalo Hidalgo avatar Guus avatar Jonatan Machado avatar Ráfaga Gianesini avatar Luis Castillo avatar Ole Schäfer avatar Torben Höhn avatar Ayate0 avatar Tony Toscano avatar  avatar Pau Iranzo avatar Ronan Guérin avatar Erfan avatar Laura Folco avatar Navarr Barnier avatar Stephan Hochdörfer avatar Anton avatar Ruud van Zuidam avatar

Watchers

Ruud van Zuidam avatar  avatar Willem Wigman avatar

magento2-preload-images's Issues

FPC compatibility

It doesn't seem to work when FPC is enabled
I think we should use a Plugin rather than an event
I'll make some tests later

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.