title: Images et performances
slug: images-performances
date: 2015-11-02
chapo: Exemple d’expérimentation technique.
> On this site, we use a lot of images within our content. As the person who maintains this site, I do my best to optimize them, but in many cases the sum total of the image weight on a page is still significant (especially as we’ve come to rely on animated GIFs for illustrations). The thing is, much of this image weight sits well offscreen. As much as I’d like to believe that every visitor reads every word we write, it’s highly likely that many visitors are downloading images that they simply do not ever see.
>
> *[Lazy Loading Images on the Web](http://developer.telerik.com/featured/lazy-loading-images-on-the-web/)* ([cache](/david/cache/911d8d2cce04195fe21b4efeaa0e25cb/))
Suite des [expérimentations techniques](/david/blog/2015/experimentations-techniques/), je demande aux [étudiants](/david/pro/enseignement/) de rédiger un article en groupe sur ce qu’ils ont testé pendant la matinée sur une thématique donnée (cet article sert d’exemple). Cette semaine : les images. L’après-midi leur permet de présenter à l’oral le fruit de leurs découvertes à l’ensemble de la promotion et pour moi de faire des rappels, des remarques et de m’assurer que la base a été comprise.
J’ai choisi d’explorer le chargement des images asynchrones ce qui permet de revoir la définition d’une image en HTML5 :
:::html
La problématique de chargement des images réside dans la consommation de bande passante dès le chargement de la page, ce qui peut être inutile si le visiteur ne parcoure pas l’intégralité de la page. Les solutions permettant de palier ceci utilisent JavaScript, par exemple [bLazy](http://dinbror.dk/blog/blazy/) qui donne l’intégration suivante :
:::html
Une classe `b-lazy` est ajoutée, une image par défaut (ici un gif transparent très petit) est intégrée dans l’attribut `src` et l’`URL` vers la véritable image utilise un attribut `data-` permettant de stocker des données de manière standardisée. Pour les navigateur n’utilisant pas JavaScript, l’image est aussi proposée dans une balise `