I migliori suggerimenti per il rendimento sul Web

Usa srcset per scegliere automaticamente le dimensioni corrette delle immagini.

Secondo HTTP Archive, tipica pagina web mobile pesa più di 2,6 MB, che sono più di due terzi il peso è rappresentato dalle immagini. È un'ottima opportunità per l'ottimizzazione.

Media dei byte di pagina per dispositivi mobili per tipo di contenuti

Riepilogo

  • Non salvare immagini di dimensioni superiori a quelle di visualizzazione.
  • Salva più dimensioni per ogni immagine e utilizza il metodo srcset per consentire al browser di scegliere il più piccolo. Il valore w indica al browser la larghezza di ogni versione:
<img src="small.jpg"
     srcset="small.jpg 500w,
             medium.jpg 1000w,
             large.jpg 1500w"
     alt="…">

Salvare immagini con le dimensioni corrette

Puoi velocizzare e ridurre il consumo di dati del tuo sito web utilizzando immagini con che corrispondono a quelle di visualizzazione. In altre parole, assegna alle immagini il giusto larghezza e altezza quando li salvi.

Dai un'occhiata alle immagini di seguito.

Sembrano quasi identici, ma la dimensione di uno è più di 10 volte più grande dell'altro.

Il gatto piccolo e Lias: due gattini tigrati di dieci settimane.
Larghezza salvata 1000 px, dimensione file 184 kB
Il gatto piccolo e Lias: due gattini tigrati di dieci settimane.
Larghezza salvata: 300 px, dimensione file 16 kB

La prima immagine ha dimensioni molto più grandi perché viene salvata con dimensioni molto più grande delle dimensioni del display. Entrambe le immagini vengono visualizzate con un 300 pixel di larghezza, quindi ha senso usare un'immagine salvata con dimensioni.

Per larghezze fisse, utilizza immagini salvate con le stesse dimensioni del dimensioni di visualizzazione.

Ma... cosa succede se le dimensioni del display variano?

In un mondo multi-dispositivo, le immagini non vengono sempre visualizzate in un'unica dimensione fissa.

Gli elementi immagine potrebbero avere una larghezza percentuale o far parte di layout adattabili dove le dimensioni di visualizzazione delle immagini cambiano per adattarsi a quelle dello schermo.

E i dispositivi che usano tanti pixel come i display Retina?

Aiuta il browser a scegliere le dimensioni giuste delle immagini

Non sarebbe fantastico se potessi rendere ogni immagine disponibile in dimensioni diverse? Consentire al browser di scegliere la dimensione migliore per il dispositivo e le dimensioni di visualizzazione? Purtroppo c'è catch-22 relativamente individuare l'immagine migliore. Il browser dovrebbe usare la dimensione minima possibile immagine, ma non può conoscerne la larghezza senza scaricarla per controllare.

È qui che entra in gioco srcset. Salvi immagini di dimensioni diverse, quindi indica al browser la larghezza di ogni versione:

<img src="small.jpg"
     srcset="small.jpg 500w, medium.jpg 1000w, large.jpg 1500w"
     alt="…">

I valori w mostrano la larghezza di ogni immagine in pixel. Ad esempio: small.jpg 500w indica al browser che small.jpg è 500 pixel di larghezza. In questo modo il browser potrà scegliere l'immagine più piccola possibile a seconda del tipo di schermo e delle dimensioni dell'area visibile, senza dover scaricare immagini per verificarne le dimensioni.

Puoi vedere srcset in azione per l'immagine di seguito. Se stai utilizzando un laptop o computer desktop, modifica le dimensioni della finestra del browser e riapri questa pagina. Quindi, utilizza il riquadro Rete degli strumenti del browser per verificare quale immagine è stata utilizzata. Dovrai farlo in una finestra di navigazione in incognito o in privato, altrimenti il il file immagine originale verrà memorizzato nella cache.

Lias e Little Puss: due gattini tigrati grigi di dieci settimane

Come faccio a creare più dimensioni delle immagini?

Devi rendere disponibili più dimensioni per ogni immagine che vuoi utilizzare con srcset.

Per le immagini singole, come quelle hero, puoi salvare manualmente dimensioni diverse. Se se hai molte immagini, ad esempio le foto dei prodotti, dovrai automatizzare. Ci sono due approcci.

Incorpora l'elaborazione delle immagini nel processo di creazione

Come parte del processo di compilazione, puoi aggiungere passaggi per creare dimensioni diverse delle tue immagini. Consulta la sezione "Utilizzare Imagemin per comprimere le immagini". per saperne di più.

Utilizza un servizio immagini

La creazione e la pubblicazione delle immagini possono essere automatizzate utilizzando un servizio commerciale come Cloudinary o un equivalente open source come Thumbor che installi ed esegui autonomamente.

Carichi le immagini ad alta risoluzione e il servizio immagini automaticamente crea e pubblica immagini di formati e dimensioni diversi a seconda dell'URL parametri. Per un esempio, apri questa immagine di esempio su Cloudinary e prova a modificare il valore w o l'estensione del file nella barra dell'URL.

I servizi di immagini hanno anche funzionalità più avanzate, come la possibilità di automatizzare "ritaglio intelligente" per diverse dimensioni delle immagini e pubblicano automaticamente immagini WebP ai browser che supportano il formato, al posto dei file JPEG, senza modificare il file .

Chrome DevTools che mostra l&#39;intestazione Content-Type WebP per il file gestito da Cloudinary

Cosa succede se l'immagine non viene visualizzata correttamente in dimensioni diverse?

In questo caso, devi utilizzare l'elemento <picture> per l'espressione "art director": fornendo un'immagine o un ritaglio di immagini differenti con dimensioni differenti. Per saperne di più dai un'occhiata al codelab "Direzione artistica".

E la densità dei pixel?

I dispositivi di fascia alta hanno pixel fisici più piccoli (più densi). Ad esempio, un di fascia alta potrebbe avere il doppio o il triplo dei pixel in ogni riga di Pixel come dispositivo più economico.

il che può influire sulle dimensioni necessarie per salvare le immagini. Non entriamo nel cruento qui, ma puoi trovare maggiori informazioni nel Codelab "Usa descrittori di densità".

E le dimensioni di visualizzazione dell'immagine?

Puoi utilizzare sizes per migliorare ulteriormente il funzionamento di srcset.

In caso contrario, il browser utilizza l'intera larghezza dell'area visibile quando sceglie immagine da un srcset. L'attributo sizes indica al browser la larghezza di un elemento immagine, in modo che il browser possa scegliere il più piccolo possibile prima di eseguire i calcoli di layout.

Nell'esempio seguente, sizes="50vw" indica al browser che l'immagine verrà visualizzato al 50% della larghezza dell'area visibile.

<img src="small.jpg"
     srcset="small.jpg 500w, medium.jpg 1000w, large.jpg 1500w"
     sizes="50vw"
     alt="…">

Puoi vedere come funziona all'indirizzo simpl.info/sizes e il codelab "Specifica di più larghezze dell'area".

E il supporto del browser?

srcset e sizes sono supportati da oltre il 90% di di Google Cloud in tutto il mondo.

Se un browser non supporta srcset o sizes, utilizzerà solo l'attributo src.

Questo rende srcset e sizes importanti miglioramenti progressivi.

Scopri di più

Consulta la sezione "Ottimizza le immagini". di web.dev per approfondire l'ottimizzazione delle immagini. Per una guida prova l'esperienza di prova del servizio " Immagini" offerto da Udacity.