Skip to main content

Rendo il web più veloce e più usabile

Abbiamo ancora bisogno delle librerie di lazy loading e di `data-src`?

In passato, quando il supporto dei browser per il lazy loading nativo non era diffuso, la best practice consisteva nell'usare gli attributi data-src e una libreria JavaScript come la mia vanilla-lazyload per caricare le immagini man mano che entravano nella viewport. Questa è ancora la best practice oggi?

Abbiamo ancora bisogno delle librerie di lazy loading e di data-src nel 2022

Cos'è il lazy loading? #

Il lazy loading delle immagini è una tecnica per rimandare il caricamento delle immagini below-the-fold (sotto la piega) fino a quando non stanno per entrare nella viewport (la parte visibile della pagina). Questa tecnica fa risparmiare larghezza di banda, riduce i costi del CDN, abbassa l'impronta di carbonio del sito web e migliora il tempo di rendering della pagina, in particolare il Largest Contentful Paint.

Lazy loading delle immagini gestito da JavaScript #

Tradizionalmente, il lazy loading delle immagini comportava la sostituzione dell'attributo src con un attributo data-src e l'uso di JavaScript per rilevare quando le immagini si avvicinavano alla viewport, per poi copiare gli attributi data in quelli corretti, avviando così il loro caricamento differito.

<img
  data-src="turtle.jpg"
  alt="Lazy turtle"
  class="lazy"
/>

Lazy loading nativo #

Con il lazy loading nativo, detto anche lazy loading a livello di browser, basta aggiungere l'attributo loading="lazy" al tag <img>.

<img
  src="turtle.jpg"
  alt="Lazy turtle"
  loading="lazy"
/>

Questo funziona su tutti i browser moderni.

Abbiamo ancora bisogno del lazy loading gestito da JavaScript? #

No, a meno che non si desideri un maggiore controllo sul processo di lazy loading.

Vediamo quali sono i casi in cui ha senso usare il lazy loading guidato da JavaScript invece di affidarsi solo a loading="lazy".

1. Supportare gli utenti con connessioni lente o instabili #

Le librerie JavaScript come vanilla-lazyload possono annullare il download delle immagini che escono dalla viewport e riprovare i download se interrotti, migliorando l'esperienza utente sulle connessioni lente.

Un caso d'uso tipico è:

Il lazy loading nativo fa sì che i browser scarichino le immagini in lazy loading dall'alto verso il basso, con conseguente ritardo nel mostrare le immagini in fondo.

Le librerie Javascript come vanilla-lazyload annulleranno il download delle immagini che escono dalla viewport, mantenendo la larghezza di banda dell'utente concentrata sulle immagini attualmente visibili.

Un altro caso d'uso è:

vanilla-lazyload riproverà a scaricare quelle immagini una volta ripristinata la connessione.

Puoi provare queste funzionalità in una qualsiasi delle demo di vanilla-lazyload, come la demo del caso base, limitando o disattivando la velocità di connessione nei developer tools del tuo browser.

2. Callback avanzate o classi CSS #

Il lazy loading gestito da JavaScript fornisce callback e classi CSS per vari eventi (inizio caricamento, fine caricamento, errore, ingresso nella viewport, uscita dalla viewport, ecc.), consentendo di monitorare il processo e creare effetti visivi avanzati.

Queste callback e classi CSS possono essere molto utili per creare effetti visivi sulla pagina.

Scopri di più su callback e classi nelle API di vanilla-lazyload / opzioni.

3. Ottimizzare le performance web, nello specifico il Largest Contentful Paint #

Il lazy loading guidato da JavaScript offre un maggiore controllo su quali immagini vengono scaricate, aiutando a ottimizzare il Largest Contentful Paint (LCP).

Con il lazy loading nativo, non hai il controllo su quali immagini vengono scaricate dal browser.

Il caso d'uso:

Il lazy loading nativo inizierebbe a scaricare queste immagini, che condividerebbero la larghezza di banda con il download dell'immagine LCP, mentre vorresti scaricare quest'ultima con la massima priorità.

Il lazy loading gestito da JavaScript come vanilla-lazyload fornisce API e opzioni per controllare con precisione quanto debbano essere distanti dalla viewport le immagini prima di iniziare a scaricarle.

4. Lazy loading di altre risorse #

Per effettuare il lazy loading di immagini di sfondo, video, SVG animati e altro, è ancora necessaria una libreria JavaScript come vanilla-lazyload.

Scopri di più #

Consulta la documentazione di vanilla-lazyload o il mio post sul blog lazy load delle immagini responsive nel 2020.