SlideShare a Scribd company logo
Web Performance
L'onda perfetta è quella che i surfisti cercano per tutta la vita, a volte senza neppure trovarla
https://www.stefanomarchisio.it/
https://www.linkedin.com/in/stefano-marchisio-88b5803a/
Chi sono
Articolo su linkedin: https://www.linkedin.com/pulse/web-
performance-londa-perfetta-per-un-sito-è-avere-tutti-marchisio/
Iniziamo
Un volta pensavo che fosse difficile fare WebPerformance per avere tutti gli indicatori in verde
con un buon punteggio.
Poi per caso mi sono trovato a studiare AMP (Accelerated Mobile Pages). Leggendo la
documentazione la cosa che salta all’occhio è che: i css posso essere solo inline e c’e’ un limite
massimo di 50K.
Come faccio a mettere Bootstrap inline quando lui da solo pesa più di 250k???
Prove dopo prove mi sono reso conto che nella maggior parte dei casi utilizziamo solo una
minima parte di Bootstrap.
Ed allora?
Lavorare sulle WebPerformance è possibile!
Nelle prossime slide vedremo perché sono così importanti e cosa quali sono le cause di performance scadenti.
La definizione di Web Performance
Le Web Performance si riferiscono alla velocità con la
quale le pagine web vengono scaricate e visualizzate
nel browser dell’utente.
Web Performance Optimization (WPO), o meglio le
ottimizzazioni dei siti web, sono come aumentare le
prestazioni web.
Ranking e motori di ricerca
Il tempo di caricamento di una pagina è uno dei
fattori che determina il ranking sui motori di ricerca.
Un sito web eccessivamente lento avrà un
posizionamento sui motori di ricerca peggiore
rispetto ad un altro sito web più veloce.
Mobile ed Internet / 1
Sempre più persone utilizzano il proprio smartphone per
accedere ad internet. Per questo navigano, fanno acquisti
su siti di e-commerce, etc.
Verificare che il sito web sia adatto per i risultati di
ricerca di Google ottimizzati per i dispositivi mobili.
Mobile ed Internet / 2
In passato si navigava usando un pc desktop. Ora
vengono usati una varietà di device (tablet e smartphone)
con schermi di dimensione variabili.
Verificare che il sito web sia responsivo. E con
contenuti adatti allo schermo per non inficiare
l’esperienza utente!
Tempi di attesa
«3 secondi di attesa basterebbero all’80% dei visitatori
per decidere di abbandonare un sito web lento.»
State of the Union, 2015
Questo è particolarmente importante in un contesto mobile dove le
connessioni possono non essere particolarmente veloci
Tempi di attesa
First Contentful Paint (FCP) misura il tempo che intercorre tra quando inizia il
caricamento della pagina a quando il contenuto inizia ad essere visibile sullo schermo.
Tempi di attesa
Nella timeline sovrastante, First Contentful Paint FCP si trova nel secondo
frame (quando per la prima volta appare qualche cosa).
Come si può vedere non tutto è stato renderizzato. Questa è un importante differenza
rispetto a Largest Contentful Paint (LCP) che indica il caricamento della pagina
Tempi di attesa
La cosa importante e far vedere qualche cosa
all’utente il prima possibile, in modo che questo non
abbandoni il sito!
Per questo motivo il sito va ottimizzato per diminuire questa
latenza ed ciò che potrebbe causare render-blocking
Passi per ottimizzare le prestazioni
Prima si devono misurare le prestazioni attuali del
sito ed individuare i problemi che lo rendono lento.
Fare un ottimizzazione alla volta e misurare nuovamente
le prestazioni per vedere se ci sono vantaggi.
Lavorare per approssimazioni successive.
Strumenti per misurare le prestazioni
Google PageSpeed Insights
Google Lighthouse
WebPagetest.org
Google Chrome DevTools
etc…
Google Lighthouse / 1
Google Lighthouse / 2
WebPagetest.org / 1
WebPagetest.org / 2
Google PageSpeed Insights
Google Chrome DevTools
Se si usa Chrome DevTools simulare una connessione mobile: Fast3G o Slow3G
Le principali cause di WebPerformance negative
• Utilizzo di troppi font personalizzati (regular, bold, etc …)
• Molte regole CSS inutilizzate nel front-end
• File JavaScript e CSS non minificati
• File testuali (JS e CSS) non compressi con Gzip
• Immagini in formati errati e non ottimizzate
• Video che si caricano in automatico
molti di questi punti posso causare render-blocking!
Ottimizzare le WebPerformance
Google Lighthouse annesso al report delle performance
fornisce una lista di punti su cui lavorare (e dei suggerimenti su
come fare le cose).
Oltre a questo nella slide successiva è presente una check-list
con i principali punti da valutare.
Alcuni metodi per ottimizzare le WebPerformance
• Mettere CSS nel <head> e JS prima di </body>
• Minificare i file CSS, JS e HTML delle pagine
• Comprimere i file CSS, JS e HTML con Gzip
• Concatenare JS e CSS (può non servire con HTTP/2 ma meglio farlo)
• Utilizzare una Content Delivery Network
• CSS, JS ed immagini meglio se hanno una cache con scadenza
• Caricare le immagini prodotti in modo lazy quando uno scrolla
• Ottimizzare le immagini con qualche tools
• Ridurre le richieste HTTP al minimo e abilitare HTTP/2
HTTP/2
L’introduzione della versione http/2 a portato consistenti benefici
alle prestazioni grazie al fatto che è un protocollo multiplexer. Per
questo motivo viene aperta un’unica connessione dalla quale
scaricare tutte le risorse.
HTTP/2
Cos’è il render-blocking
Una delle maggiori cause di rallentamenti è il render-blocking.
Dopo che la pagina è stata caricata, il browser inizia a parsarla per
renderizzarla. Se trova CSS o JS il browser si ferma ed aspetta che vengano
caricate queste risorse (per poi riprendere).
Per questo motivo dobbiamo gestire in modo opportuno questo tipo di risorse!
Cos’è il render-blocking / CSS
Per quanto riguarda i CSS abbiamo un margine minore, visto che senza di loro
la pagina non può essere renderizzata (ma possiamo comunque fare 2 cose)
Minificare e comprimere i CSS in modo da pesare meno e metterli in un unico
file di bundle (anche se con HTTP/2 la cosa è meno importante).
Eventualmente rimuovere i CSS non utilizzati con appositi tools.
Cos’è il render-blocking / JS
Questo accade quando abbiamo JS all’interno del tag <head>
Dobbiamo spostarlo in fondo prima della chiusura del tag </body>
Spostando gli script in fondo non si blocca il parser ed il render della pagina
Nei browser moderni abbiamo gli attributi: «async» e «defer» che
permettono di caricare in modo asincrono uno script senza bloccare il render.
Attrinuti «async» e «defer» tag script
Gli attributi «async» e «defer» sono simili e scaricano lo script in modo asincrono. La differenza è
che «async» lancia lo script appena è stato scaricato, «defer» rispetta l’ordine.
Considerazioni sui font / 1
I font come i CSS devono essere scaricati. Finche non sono disponibili i
browser possono avere comportamenti differenti: visualizzare testo bianco
piuttosto che usare un font di fallback di sistema.
font-display permette di controllare come i font vengono scambiati con i font di sistema
durante il caricamento del font desiderato.
font-display: swap; indica che la pagina viene renderizzata usando il primo font di
sistema disponibile fino al caricamento di “Open Sans Regular ”.
Considerazioni sui font / 2
Non esagerare nell’uso dei font, eventualmente fare il preload dei font.
Purificare i CSS (rimuovere i CSS non utilizzati)
Se utilizziamo Bootstrap nella maggior parte dei casi utilizziamo solo
una minima parte delle classi incluse nel file CSS.
Per questo motivo mediante appositi tools dobbiamo PROVARE a
RIMUOVERE ciò che non è utilizzato.
Esistono alcuni tools che fanno ciò: PurifyCSS e UnusedCSS.
La Chrome’s DevTools ha un “Coverage” tab che mostra l’utilizzo di CSS e JS.
PurifyCSS
E’ un tools scaricabile da NPM o usufruibile online.
npm install -g purify-css
purifycss <css> <content> [option]
UnusedCSS
E’ un tools scaricabile da NPM o usufruibile online (gratuito e pagamento).
npm install -g unusedcss
unusedcss url [url]
Chrome’s DevTools “Coverage” tab
Immagini / 1
Sempre per lo stesso motivo è consigliabile ottimizzare le
immagini al fine di ridurre il peso.
Le immagini NON sono render-blocking ma influiscono lo stesso
sul tempo di caricamento della pagina.
Immagini / 2
Nel caso esita un elenco di prodotti (per esempio) è meglio avere un
caricamento lazy delle immagini quando l’utente scrolla la pagina. Per cui
subito far vedere una sorta di place-holder
Per esempio una libreria che fa una cosa simile è: yall.js
Considerazioni per CSS, JS e Immagini
Fornire risorse statiche con un efficiente cache policy (scadenza).
Eventualmente utilizzare una Content Delivery Network / CDN. Spesso
utilizzando un sistema simile è possibile abilitare una cache policy
Considerazioni finali
Non è detto che dobbiamo fare tutti questi passi, possiamo farne solo alcuni.
Al completamento di ogni passo, fare un test delle prestazioni e vedere
il miglioramento ottenuto.
G R A Z I E !
Stefano Marchisio - Sviluppatore web - Angular / ASP.NET MVC Core
https://www.linkedin.com/in/stefano-marchisio-88b5803a/

More Related Content

What's hot

Idee Eccezionali Relative A Wordpress È Necessario
Idee Eccezionali Relative A Wordpress È NecessarioIdee Eccezionali Relative A Wordpress È Necessario
Idee Eccezionali Relative A Wordpress È Necessario
jumbledboyfrien39
 
Crea Un Blog. E Gratis!
 Crea Un Blog. E Gratis! 
 Crea Un Blog. E Gratis!
Crea Un Blog. E Gratis!
dispensableinso39
 
Wordpress per principianti: guida in 5 step e in 5 aree
Wordpress per principianti: guida in 5 step e in 5 areeWordpress per principianti: guida in 5 step e in 5 aree
Wordpress per principianti: guida in 5 step e in 5 aree
Leonardo Serboni
 
WordPress lento? Guida per un sito web veloce e performante. Autore Emilio Pe...
WordPress lento? Guida per un sito web veloce e performante. Autore Emilio Pe...WordPress lento? Guida per un sito web veloce e performante. Autore Emilio Pe...
WordPress lento? Guida per un sito web veloce e performante. Autore Emilio Pe...
Petrozzi Emilio
 
Velocizzare Un Sito Web Fatto Con WordPress
Velocizzare Un Sito Web Fatto Con WordPressVelocizzare Un Sito Web Fatto Con WordPress
Velocizzare Un Sito Web Fatto Con WordPress
Carlenzoli Yuri
 
Come sviluppare applicazioni cross device con HTML
Come sviluppare applicazioni cross device con HTMLCome sviluppare applicazioni cross device con HTML
Come sviluppare applicazioni cross device con HTMLSinergia Totale
 
Tutto Quello Che C'È Da Sapere Su Wordpress
Tutto Quello Che C'È Da Sapere Su WordpressTutto Quello Che C'È Da Sapere Su Wordpress
Tutto Quello Che C'È Da Sapere Su Wordpress
ambitiousgem7429
 
Consigli E Trucchi Per Migliorare Il Vostro Wordpress Competenze
Consigli E Trucchi Per Migliorare Il Vostro Wordpress CompetenzeConsigli E Trucchi Per Migliorare Il Vostro Wordpress Competenze
Consigli E Trucchi Per Migliorare Il Vostro Wordpress Competenze
elfinalmanac2249
 
WordPress 4.6 Corso Bacic
WordPress 4.6 Corso BacicWordPress 4.6 Corso Bacic
WordPress 4.6 Corso Bacic
Renato Gelforte
 
50 tips su Web  Performance Optimization per siti ad alto traffico @ WpCamp B...
50 tips su Web  Performance Optimization per siti ad alto traffico @ WpCamp B...50 tips su Web  Performance Optimization per siti ad alto traffico @ WpCamp B...
50 tips su Web  Performance Optimization per siti ad alto traffico @ WpCamp B...
Andrea Cardinali
 
Tre modi per aumentare la velocità del tuo Business Website e guadagnare on...
Tre modi per aumentare la velocità del tuo Business Website e guadagnare on...Tre modi per aumentare la velocità del tuo Business Website e guadagnare on...
Tre modi per aumentare la velocità del tuo Business Website e guadagnare on...
Matteo Stefan
 
Presentazione Frosmo in italiano Nov2015
Presentazione Frosmo in italiano Nov2015 Presentazione Frosmo in italiano Nov2015
Presentazione Frosmo in italiano Nov2015
Manuel Furlotti
 
Lezione WordPress Università degli Studi di Milano: Installazione e Gestione
Lezione WordPress Università degli Studi di Milano: Installazione e GestioneLezione WordPress Università degli Studi di Milano: Installazione e Gestione
Lezione WordPress Università degli Studi di Milano: Installazione e Gestione
alessandro gasparotto
 
FROSMO Presentazione in Italiano 2016
FROSMO Presentazione in Italiano 2016FROSMO Presentazione in Italiano 2016
FROSMO Presentazione in Italiano 2016
Manuel Furlotti
 
Wordpress: Guida all'uso (avanzato)
Wordpress: Guida all'uso (avanzato)Wordpress: Guida all'uso (avanzato)
Wordpress: Guida all'uso (avanzato)
Artlandis' Webinar & Workshop
 
Come creare un blog con wordpress.org e bluehost in 5 minuti
Come creare un blog con wordpress.org e bluehost in 5 minuti Come creare un blog con wordpress.org e bluehost in 5 minuti
Come creare un blog con wordpress.org e bluehost in 5 minuti
Dario Vignali
 
WordPress: creare e gestire un sito gratuitamente e senza essere un esperto
WordPress: creare e gestire un sito gratuitamente e senza essere un espertoWordPress: creare e gestire un sito gratuitamente e senza essere un esperto
WordPress: creare e gestire un sito gratuitamente e senza essere un esperto
Boris Amico
 
Wordpress corso base 2013
Wordpress corso base 2013Wordpress corso base 2013
Wordpress corso base 2013
Valentina Cinelli
 

What's hot (20)

Idee Eccezionali Relative A Wordpress È Necessario
Idee Eccezionali Relative A Wordpress È NecessarioIdee Eccezionali Relative A Wordpress È Necessario
Idee Eccezionali Relative A Wordpress È Necessario
 
Crea Un Blog. E Gratis!
 Crea Un Blog. E Gratis! 
 Crea Un Blog. E Gratis!
Crea Un Blog. E Gratis!
 
Wordpress per principianti: guida in 5 step e in 5 aree
Wordpress per principianti: guida in 5 step e in 5 areeWordpress per principianti: guida in 5 step e in 5 aree
Wordpress per principianti: guida in 5 step e in 5 aree
 
WordPress lento? Guida per un sito web veloce e performante. Autore Emilio Pe...
WordPress lento? Guida per un sito web veloce e performante. Autore Emilio Pe...WordPress lento? Guida per un sito web veloce e performante. Autore Emilio Pe...
WordPress lento? Guida per un sito web veloce e performante. Autore Emilio Pe...
 
Velocizzare Un Sito Web Fatto Con WordPress
Velocizzare Un Sito Web Fatto Con WordPressVelocizzare Un Sito Web Fatto Con WordPress
Velocizzare Un Sito Web Fatto Con WordPress
 
Come sviluppare applicazioni cross device con HTML
Come sviluppare applicazioni cross device con HTMLCome sviluppare applicazioni cross device con HTML
Come sviluppare applicazioni cross device con HTML
 
I Love WordPress
I Love WordPressI Love WordPress
I Love WordPress
 
Tutto Quello Che C'È Da Sapere Su Wordpress
Tutto Quello Che C'È Da Sapere Su WordpressTutto Quello Che C'È Da Sapere Su Wordpress
Tutto Quello Che C'È Da Sapere Su Wordpress
 
Consigli E Trucchi Per Migliorare Il Vostro Wordpress Competenze
Consigli E Trucchi Per Migliorare Il Vostro Wordpress CompetenzeConsigli E Trucchi Per Migliorare Il Vostro Wordpress Competenze
Consigli E Trucchi Per Migliorare Il Vostro Wordpress Competenze
 
WordPress 4.6 Corso Bacic
WordPress 4.6 Corso BacicWordPress 4.6 Corso Bacic
WordPress 4.6 Corso Bacic
 
50 tips su Web  Performance Optimization per siti ad alto traffico @ WpCamp B...
50 tips su Web  Performance Optimization per siti ad alto traffico @ WpCamp B...50 tips su Web  Performance Optimization per siti ad alto traffico @ WpCamp B...
50 tips su Web  Performance Optimization per siti ad alto traffico @ WpCamp B...
 
Tre modi per aumentare la velocità del tuo Business Website e guadagnare on...
Tre modi per aumentare la velocità del tuo Business Website e guadagnare on...Tre modi per aumentare la velocità del tuo Business Website e guadagnare on...
Tre modi per aumentare la velocità del tuo Business Website e guadagnare on...
 
Web frameworks
Web frameworksWeb frameworks
Web frameworks
 
Presentazione Frosmo in italiano Nov2015
Presentazione Frosmo in italiano Nov2015 Presentazione Frosmo in italiano Nov2015
Presentazione Frosmo in italiano Nov2015
 
Lezione WordPress Università degli Studi di Milano: Installazione e Gestione
Lezione WordPress Università degli Studi di Milano: Installazione e GestioneLezione WordPress Università degli Studi di Milano: Installazione e Gestione
Lezione WordPress Università degli Studi di Milano: Installazione e Gestione
 
FROSMO Presentazione in Italiano 2016
FROSMO Presentazione in Italiano 2016FROSMO Presentazione in Italiano 2016
FROSMO Presentazione in Italiano 2016
 
Wordpress: Guida all'uso (avanzato)
Wordpress: Guida all'uso (avanzato)Wordpress: Guida all'uso (avanzato)
Wordpress: Guida all'uso (avanzato)
 
Come creare un blog con wordpress.org e bluehost in 5 minuti
Come creare un blog con wordpress.org e bluehost in 5 minuti Come creare un blog con wordpress.org e bluehost in 5 minuti
Come creare un blog con wordpress.org e bluehost in 5 minuti
 
WordPress: creare e gestire un sito gratuitamente e senza essere un esperto
WordPress: creare e gestire un sito gratuitamente e senza essere un espertoWordPress: creare e gestire un sito gratuitamente e senza essere un esperto
WordPress: creare e gestire un sito gratuitamente e senza essere un esperto
 
Wordpress corso base 2013
Wordpress corso base 2013Wordpress corso base 2013
Wordpress corso base 2013
 

Similar to Webperformance, come ottimizzare il tempo di caricamento di una pagina web!

Mobile UI Design
Mobile UI DesignMobile UI Design
Mobile UI Design
Simone Viani
 
L'importanza dei Core Web Vitals per l'ecommerce - Ivano Di Biasi.pptx
L'importanza dei Core Web Vitals per l'ecommerce - Ivano Di Biasi.pptxL'importanza dei Core Web Vitals per l'ecommerce - Ivano Di Biasi.pptx
L'importanza dei Core Web Vitals per l'ecommerce - Ivano Di Biasi.pptx
Ecommerce HUB
 
Errori Comuni nella SEO - Intervento Smau 2020
Errori Comuni nella SEO - Intervento Smau 2020Errori Comuni nella SEO - Intervento Smau 2020
Errori Comuni nella SEO - Intervento Smau 2020
Verdiana Amorosi - SEO Consultant
 
Blazor: are we ready for the launch?
Blazor: are we ready for the launch?Blazor: are we ready for the launch?
Blazor: are we ready for the launch?
Andrea Agnoletto
 
Errori Comuni nella SEO - Intervento smau 2020
Errori Comuni nella SEO - Intervento smau 2020Errori Comuni nella SEO - Intervento smau 2020
Errori Comuni nella SEO - Intervento smau 2020
Verdiana Amorosi - SEO Consultant
 
Session isolation e rendering delle pagine web
Session isolation e rendering delle pagine webSession isolation e rendering delle pagine web
Session isolation e rendering delle pagine web
Giacomo Zecchini
 
Come e perché ($) migliorare le prestazioni web - Aprile 2023.pptx
Come e perché ($) migliorare le prestazioni web - Aprile 2023.pptxCome e perché ($) migliorare le prestazioni web - Aprile 2023.pptx
Come e perché ($) migliorare le prestazioni web - Aprile 2023.pptx
Andrea Verlicchi
 
Come e perché ($) migliorare le prestazioni web.pdf
Come e perché ($) migliorare le prestazioni web.pdfCome e perché ($) migliorare le prestazioni web.pdf
Come e perché ($) migliorare le prestazioni web.pdf
Andrea Verlicchi
 
Eseguire test sintetici delle Web Performance con webpagetest.org
Eseguire test sintetici delle Web Performance con webpagetest.orgEseguire test sintetici delle Web Performance con webpagetest.org
Eseguire test sintetici delle Web Performance con webpagetest.org
Olegs Belousovs
 
Be02 portare la nostra applicazione su azure
Be02   portare la nostra applicazione su azureBe02   portare la nostra applicazione su azure
Be02 portare la nostra applicazione su azureDotNetCampus
 
Applicazioni HTML5 Superveloci - Salvatore Romeo
Applicazioni HTML5 Superveloci - Salvatore RomeoApplicazioni HTML5 Superveloci - Salvatore Romeo
Applicazioni HTML5 Superveloci - Salvatore Romeo
marcocasario
 
Bootstrap
BootstrapBootstrap
Bootstrap
Marco Buttolo
 
SMAU Milano 2015
SMAU Milano 2015SMAU Milano 2015
SMAU Milano 2015
Paolo Dadda
 
Developing for Performances - Laboratorio di Web Design 2014/15
Developing for Performances - Laboratorio di Web Design 2014/15Developing for Performances - Laboratorio di Web Design 2014/15
Developing for Performances - Laboratorio di Web Design 2014/15
Giovanni Buffa
 
Come fare SEO con AngularJS
Come fare SEO con AngularJSCome fare SEO con AngularJS
Come fare SEO con AngularJS
Giovanni Sacheli
 
Seo e prestashop
Seo e prestashopSeo e prestashop
Seo e prestashop
Giovanni Sacheli
 
21 SEO actions per il lancio di un nuovo sito
21 SEO actions per il lancio di un nuovo sito21 SEO actions per il lancio di un nuovo sito
21 SEO actions per il lancio di un nuovo sito
Marketing Freaks
 
Corso WebApp iOS - Lezione 06: Web Development for iOS Devices
Corso WebApp iOS - Lezione 06:   Web Development for iOS DevicesCorso WebApp iOS - Lezione 06:   Web Development for iOS Devices
Corso WebApp iOS - Lezione 06: Web Development for iOS Devices
Andrea Picchi
 

Similar to Webperformance, come ottimizzare il tempo di caricamento di una pagina web! (20)

Mobile UI Design
Mobile UI DesignMobile UI Design
Mobile UI Design
 
L'importanza dei Core Web Vitals per l'ecommerce - Ivano Di Biasi.pptx
L'importanza dei Core Web Vitals per l'ecommerce - Ivano Di Biasi.pptxL'importanza dei Core Web Vitals per l'ecommerce - Ivano Di Biasi.pptx
L'importanza dei Core Web Vitals per l'ecommerce - Ivano Di Biasi.pptx
 
Errori Comuni nella SEO - Intervento Smau 2020
Errori Comuni nella SEO - Intervento Smau 2020Errori Comuni nella SEO - Intervento Smau 2020
Errori Comuni nella SEO - Intervento Smau 2020
 
Blazor: are we ready for the launch?
Blazor: are we ready for the launch?Blazor: are we ready for the launch?
Blazor: are we ready for the launch?
 
Errori Comuni nella SEO - Intervento smau 2020
Errori Comuni nella SEO - Intervento smau 2020Errori Comuni nella SEO - Intervento smau 2020
Errori Comuni nella SEO - Intervento smau 2020
 
Session isolation e rendering delle pagine web
Session isolation e rendering delle pagine webSession isolation e rendering delle pagine web
Session isolation e rendering delle pagine web
 
Come e perché ($) migliorare le prestazioni web - Aprile 2023.pptx
Come e perché ($) migliorare le prestazioni web - Aprile 2023.pptxCome e perché ($) migliorare le prestazioni web - Aprile 2023.pptx
Come e perché ($) migliorare le prestazioni web - Aprile 2023.pptx
 
Come e perché ($) migliorare le prestazioni web.pdf
Come e perché ($) migliorare le prestazioni web.pdfCome e perché ($) migliorare le prestazioni web.pdf
Come e perché ($) migliorare le prestazioni web.pdf
 
Eseguire test sintetici delle Web Performance con webpagetest.org
Eseguire test sintetici delle Web Performance con webpagetest.orgEseguire test sintetici delle Web Performance con webpagetest.org
Eseguire test sintetici delle Web Performance con webpagetest.org
 
Be02 portare la nostra applicazione su azure
Be02   portare la nostra applicazione su azureBe02   portare la nostra applicazione su azure
Be02 portare la nostra applicazione su azure
 
Applicazioni HTML5 Superveloci - Salvatore Romeo
Applicazioni HTML5 Superveloci - Salvatore RomeoApplicazioni HTML5 Superveloci - Salvatore Romeo
Applicazioni HTML5 Superveloci - Salvatore Romeo
 
Bootstrap
BootstrapBootstrap
Bootstrap
 
SMAU Milano 2015
SMAU Milano 2015SMAU Milano 2015
SMAU Milano 2015
 
Wpo extended
Wpo extendedWpo extended
Wpo extended
 
Developing for Performances - Laboratorio di Web Design 2014/15
Developing for Performances - Laboratorio di Web Design 2014/15Developing for Performances - Laboratorio di Web Design 2014/15
Developing for Performances - Laboratorio di Web Design 2014/15
 
Lamp Ld2008
Lamp Ld2008Lamp Ld2008
Lamp Ld2008
 
Come fare SEO con AngularJS
Come fare SEO con AngularJSCome fare SEO con AngularJS
Come fare SEO con AngularJS
 
Seo e prestashop
Seo e prestashopSeo e prestashop
Seo e prestashop
 
21 SEO actions per il lancio di un nuovo sito
21 SEO actions per il lancio di un nuovo sito21 SEO actions per il lancio di un nuovo sito
21 SEO actions per il lancio di un nuovo sito
 
Corso WebApp iOS - Lezione 06: Web Development for iOS Devices
Corso WebApp iOS - Lezione 06:   Web Development for iOS DevicesCorso WebApp iOS - Lezione 06:   Web Development for iOS Devices
Corso WebApp iOS - Lezione 06: Web Development for iOS Devices
 

Webperformance, come ottimizzare il tempo di caricamento di una pagina web!

  • 1. Web Performance L'onda perfetta è quella che i surfisti cercano per tutta la vita, a volte senza neppure trovarla
  • 2. https://www.stefanomarchisio.it/ https://www.linkedin.com/in/stefano-marchisio-88b5803a/ Chi sono Articolo su linkedin: https://www.linkedin.com/pulse/web- performance-londa-perfetta-per-un-sito-è-avere-tutti-marchisio/
  • 3. Iniziamo Un volta pensavo che fosse difficile fare WebPerformance per avere tutti gli indicatori in verde con un buon punteggio. Poi per caso mi sono trovato a studiare AMP (Accelerated Mobile Pages). Leggendo la documentazione la cosa che salta all’occhio è che: i css posso essere solo inline e c’e’ un limite massimo di 50K. Come faccio a mettere Bootstrap inline quando lui da solo pesa più di 250k??? Prove dopo prove mi sono reso conto che nella maggior parte dei casi utilizziamo solo una minima parte di Bootstrap. Ed allora?
  • 4. Lavorare sulle WebPerformance è possibile! Nelle prossime slide vedremo perché sono così importanti e cosa quali sono le cause di performance scadenti.
  • 5. La definizione di Web Performance Le Web Performance si riferiscono alla velocità con la quale le pagine web vengono scaricate e visualizzate nel browser dell’utente. Web Performance Optimization (WPO), o meglio le ottimizzazioni dei siti web, sono come aumentare le prestazioni web.
  • 6. Ranking e motori di ricerca Il tempo di caricamento di una pagina è uno dei fattori che determina il ranking sui motori di ricerca. Un sito web eccessivamente lento avrà un posizionamento sui motori di ricerca peggiore rispetto ad un altro sito web più veloce.
  • 7. Mobile ed Internet / 1 Sempre più persone utilizzano il proprio smartphone per accedere ad internet. Per questo navigano, fanno acquisti su siti di e-commerce, etc. Verificare che il sito web sia adatto per i risultati di ricerca di Google ottimizzati per i dispositivi mobili.
  • 8. Mobile ed Internet / 2 In passato si navigava usando un pc desktop. Ora vengono usati una varietà di device (tablet e smartphone) con schermi di dimensione variabili. Verificare che il sito web sia responsivo. E con contenuti adatti allo schermo per non inficiare l’esperienza utente!
  • 9. Tempi di attesa «3 secondi di attesa basterebbero all’80% dei visitatori per decidere di abbandonare un sito web lento.» State of the Union, 2015 Questo è particolarmente importante in un contesto mobile dove le connessioni possono non essere particolarmente veloci
  • 10. Tempi di attesa First Contentful Paint (FCP) misura il tempo che intercorre tra quando inizia il caricamento della pagina a quando il contenuto inizia ad essere visibile sullo schermo.
  • 11. Tempi di attesa Nella timeline sovrastante, First Contentful Paint FCP si trova nel secondo frame (quando per la prima volta appare qualche cosa). Come si può vedere non tutto è stato renderizzato. Questa è un importante differenza rispetto a Largest Contentful Paint (LCP) che indica il caricamento della pagina
  • 12. Tempi di attesa La cosa importante e far vedere qualche cosa all’utente il prima possibile, in modo che questo non abbandoni il sito! Per questo motivo il sito va ottimizzato per diminuire questa latenza ed ciò che potrebbe causare render-blocking
  • 13. Passi per ottimizzare le prestazioni Prima si devono misurare le prestazioni attuali del sito ed individuare i problemi che lo rendono lento. Fare un ottimizzazione alla volta e misurare nuovamente le prestazioni per vedere se ci sono vantaggi. Lavorare per approssimazioni successive.
  • 14. Strumenti per misurare le prestazioni Google PageSpeed Insights Google Lighthouse WebPagetest.org Google Chrome DevTools etc…
  • 20. Google Chrome DevTools Se si usa Chrome DevTools simulare una connessione mobile: Fast3G o Slow3G
  • 21. Le principali cause di WebPerformance negative • Utilizzo di troppi font personalizzati (regular, bold, etc …) • Molte regole CSS inutilizzate nel front-end • File JavaScript e CSS non minificati • File testuali (JS e CSS) non compressi con Gzip • Immagini in formati errati e non ottimizzate • Video che si caricano in automatico molti di questi punti posso causare render-blocking!
  • 22. Ottimizzare le WebPerformance Google Lighthouse annesso al report delle performance fornisce una lista di punti su cui lavorare (e dei suggerimenti su come fare le cose). Oltre a questo nella slide successiva è presente una check-list con i principali punti da valutare.
  • 23. Alcuni metodi per ottimizzare le WebPerformance • Mettere CSS nel <head> e JS prima di </body> • Minificare i file CSS, JS e HTML delle pagine • Comprimere i file CSS, JS e HTML con Gzip • Concatenare JS e CSS (può non servire con HTTP/2 ma meglio farlo) • Utilizzare una Content Delivery Network • CSS, JS ed immagini meglio se hanno una cache con scadenza • Caricare le immagini prodotti in modo lazy quando uno scrolla • Ottimizzare le immagini con qualche tools • Ridurre le richieste HTTP al minimo e abilitare HTTP/2
  • 24. HTTP/2 L’introduzione della versione http/2 a portato consistenti benefici alle prestazioni grazie al fatto che è un protocollo multiplexer. Per questo motivo viene aperta un’unica connessione dalla quale scaricare tutte le risorse.
  • 26. Cos’è il render-blocking Una delle maggiori cause di rallentamenti è il render-blocking. Dopo che la pagina è stata caricata, il browser inizia a parsarla per renderizzarla. Se trova CSS o JS il browser si ferma ed aspetta che vengano caricate queste risorse (per poi riprendere). Per questo motivo dobbiamo gestire in modo opportuno questo tipo di risorse!
  • 27. Cos’è il render-blocking / CSS Per quanto riguarda i CSS abbiamo un margine minore, visto che senza di loro la pagina non può essere renderizzata (ma possiamo comunque fare 2 cose) Minificare e comprimere i CSS in modo da pesare meno e metterli in un unico file di bundle (anche se con HTTP/2 la cosa è meno importante). Eventualmente rimuovere i CSS non utilizzati con appositi tools.
  • 28. Cos’è il render-blocking / JS Questo accade quando abbiamo JS all’interno del tag <head> Dobbiamo spostarlo in fondo prima della chiusura del tag </body> Spostando gli script in fondo non si blocca il parser ed il render della pagina Nei browser moderni abbiamo gli attributi: «async» e «defer» che permettono di caricare in modo asincrono uno script senza bloccare il render.
  • 29. Attrinuti «async» e «defer» tag script Gli attributi «async» e «defer» sono simili e scaricano lo script in modo asincrono. La differenza è che «async» lancia lo script appena è stato scaricato, «defer» rispetta l’ordine.
  • 30. Considerazioni sui font / 1 I font come i CSS devono essere scaricati. Finche non sono disponibili i browser possono avere comportamenti differenti: visualizzare testo bianco piuttosto che usare un font di fallback di sistema. font-display permette di controllare come i font vengono scambiati con i font di sistema durante il caricamento del font desiderato. font-display: swap; indica che la pagina viene renderizzata usando il primo font di sistema disponibile fino al caricamento di “Open Sans Regular ”.
  • 31. Considerazioni sui font / 2 Non esagerare nell’uso dei font, eventualmente fare il preload dei font.
  • 32. Purificare i CSS (rimuovere i CSS non utilizzati) Se utilizziamo Bootstrap nella maggior parte dei casi utilizziamo solo una minima parte delle classi incluse nel file CSS. Per questo motivo mediante appositi tools dobbiamo PROVARE a RIMUOVERE ciò che non è utilizzato. Esistono alcuni tools che fanno ciò: PurifyCSS e UnusedCSS. La Chrome’s DevTools ha un “Coverage” tab che mostra l’utilizzo di CSS e JS.
  • 33. PurifyCSS E’ un tools scaricabile da NPM o usufruibile online. npm install -g purify-css purifycss <css> <content> [option]
  • 34. UnusedCSS E’ un tools scaricabile da NPM o usufruibile online (gratuito e pagamento). npm install -g unusedcss unusedcss url [url]
  • 36. Immagini / 1 Sempre per lo stesso motivo è consigliabile ottimizzare le immagini al fine di ridurre il peso. Le immagini NON sono render-blocking ma influiscono lo stesso sul tempo di caricamento della pagina.
  • 37. Immagini / 2 Nel caso esita un elenco di prodotti (per esempio) è meglio avere un caricamento lazy delle immagini quando l’utente scrolla la pagina. Per cui subito far vedere una sorta di place-holder Per esempio una libreria che fa una cosa simile è: yall.js
  • 38. Considerazioni per CSS, JS e Immagini Fornire risorse statiche con un efficiente cache policy (scadenza). Eventualmente utilizzare una Content Delivery Network / CDN. Spesso utilizzando un sistema simile è possibile abilitare una cache policy
  • 39. Considerazioni finali Non è detto che dobbiamo fare tutti questi passi, possiamo farne solo alcuni. Al completamento di ogni passo, fare un test delle prestazioni e vedere il miglioramento ottenuto.
  • 40. G R A Z I E ! Stefano Marchisio - Sviluppatore web - Angular / ASP.NET MVC Core https://www.linkedin.com/in/stefano-marchisio-88b5803a/