Perché dovrebbe interessarti?
Le immagini WebP sono più piccole delle loro controparti JPEG e PNG, di solito nelle una riduzione del 25-35% delle dimensioni dei file. Ciò riduce le dimensioni della pagina migliora le prestazioni.
- YouTube ha rilevato che il passaggio alle miniature WebP ha generato il 10% caricamenti pagina più rapidi.
- Facebook ha sperimentato un Risparmio del 25-35% sulle dimensioni dei file per i file JPEG e dell'80% sulle dimensioni dei file PNG quando sono passati a WebP.
WebP è un ottimo sostituto delle immagini JPEG, PNG e GIF. Inoltre, WebP offre la compressione senza perdita di dati e con perdita di dati. Nella compressione senza perdita di dati è perduto. La compressione con perdita riduce le dimensioni dei file, ma a scapito comunque riducendo la qualità delle immagini.
Converti immagini in WebP
Generalmente le persone utilizzano uno dei seguenti approcci per convertire le immagini a WebP: strumento a riga di comando cwebp o il plug-in WebP Imagemin (npm). . Il plug-in Imagemin WebP è in genere la scelta migliore se il tuo progetto utilizza script o strumenti di creazione (ad es. Webpack o Gulp), mentre l'interfaccia a riga di comando è una buona scelta per progetti semplici o se devi convertire le immagini una sola volta.
Quando converti le immagini in WebP, hai la possibilità di impostare un'ampia varietà di impostazioni di compressione, ma per la maggior parte delle persone l'unica cosa che è l'impostazione della qualità. Puoi specificare un livello qualitativo compreso tra 0 (peggiore) a 100 (migliore). Vale la pena sperimentare questo argomento, trova qual è il giusto compromesso tra qualità dell'immagine e dimensioni del file e alle esigenze aziendali.
Usa cwebp
Converti un singolo file utilizzando le impostazioni di compressione predefinite di cwebp:
cwebp images/flower.jpg -o images/flower.webp
Converti un singolo file, utilizzando un livello qualitativo pari a 50
:
cwebp -q 50 images/flower.jpg -o images/flower.webp
Converti tutti i file in una directory:
for file in images/*; do cwebp "$file" -o "${file%.*}.webp"; done
Utilizza Imagemin
Il plug-in Imagemin WebP può essere utilizzato da solo o con il tuo strumento di creazione preferito (Webpack/Gulp/Grunt/etc.). Questo di solito comporta l'aggiunta di circa 10 righe di codice o il file di configurazione dello strumento di creazione. Ecco alcuni esempi su come farlo Webpack Gulp e Grunt.
Se non usi uno di questi strumenti di creazione, puoi usare Imagemin da solo
uno script Node. Questo script convertirà i file nella directory images
e
salvarle nella directory compressed_images
.
const imagemin = require('imagemin');
const imageminWebp = require('imagemin-webp');
imagemin(['images/*'], {
destination: 'compressed_images',
plugins: [imageminWebp({quality: 50})]
}).then(() => {
console.log('Done!');
});
Pubblica immagini WebP
Se il tuo sito supporta solo gli elementi compatibili con WebP browser, puoi smettere di leggere. Altrimenti, pubblicare WebP nei browser più recenti e un'immagine di riserva nei browser meno recenti:
Prima:
html
<img src="flower.jpg" alt="">
Dopo:
html
<picture>
<source type="image/webp" srcset="flower.webp">
<source type="image/jpeg" srcset="flower.jpg">
<img src="flower.jpg" alt="">
</picture>
La
<picture>
,
<source>
,
e <img>
, incluso il modo in cui sono ordinati l'uno rispetto all'altro, tutti
interagire per raggiungere questo risultato finale.
<picture>
Il tag <picture>
fornisce un wrapper per zero o più tag <source>
e un tag <img>
.
<source>
Il tag <source>
specifica una risorsa multimediale.
Il browser utilizza la prima origine elencata in un formato supportato. Se il browser non supporta nessuno dei formati elencati nei tag <source>
, utilizza di nuovo il caricamento dell'immagine specificata dal tag <img>
.
<img>
Il tag <img>
è ciò che fa funzionare questo codice sui browser
che non supportano il tag <picture>
.
Se un browser non supporta il tag <picture>
,
ignorando i tag non supportati. Di conseguenza, "vede" il
<img src="flower.jpg" alt="">
e carica l'immagine.
Lettura dell'intestazione HTTP Accept
Se hai un backend dell'applicazione o un server web che ti consente di riscrivere le richieste, puoi leggere il valore dell'intestazione Accept
HTTP, che indicherà quali formati di immagine alternativi sono supportati:
Accept: image/webp,image/svg+xml,image/*,*/*;q=0.8
Leggere l'intestazione di questa richiesta e riscrivere la risposta in base ai suoi contenuti ha il vantaggio di semplificare il markup delle immagini. Il markup <picture>
può essere piuttosto lungo con molte fonti. Di seguito è riportata una regola mod_rewrite
di Apache che può gestire alternative WebP:
RewriteEngine On
RewriteCond %{HTTP:Accept} image/webp [NC]
RewriteCond %{HTTP:Content-Disposition} !attachment [NC]
RewriteCond %{DOCUMENT_ROOT}/$1.webp -f [NC]
RewriteRule (.+)\.(png|jpe?g)$ $1.webp [T=image/webp,L]
Se scegli questa opzione, dovrai impostare l'intestazione della risposta Vary
HTTP per assicurarti che le cache capiscano che l'immagine può essere pubblicata con tipi di contenuti diversi:
<FilesMatch ".(jpe?g|png)$">
<IfModule mod_headers.c>
Header set Vary "Content-Type"
</IfModule>
</FilesMatch>
La regola di riscrittura qui sopra cercherà una versione WebP di qualsiasi immagine JPEG o PNG richiesta. Se viene trovata un'alternativa WebP, verrà pubblicata con l'intestazione Content-Type
corretta. In questo modo potrai utilizzare un markup delle immagini simile al seguente con il supporto automatico di WebP:
<img src="flower-320w.jpg" srcset="flower-320w.jpg 320w, flower-640w.jpg 640w, flower-960w.jpg 960w">
Verifica l'utilizzo di WebP
Puoi utilizzare Lighthouse per verificare che tutte le immagini sul sito vengano pubblicate usando WebP. Esegui il controllo delle prestazioni di Lighthouse (Lighthouse > Opzioni > Performance Max) e cerca i risultati dell'opzione Pubblica immagini di nuova generazione formati di Google Cloud. Lighthouse elencherà tutte le immagini non pubblicate in WebP