SlideShare une entreprise Scribd logo
1  sur  64
Ottimizzazione step-by-step
del front-end di un
e-commerce
Francesco Terenzani – 10 maggio 2019
WPO
#seriousmonkeyfrancesco.terenzani@smartguys.it
Cioè?
Ho preso una installazione «base» di Magento2.
Mi sono accorto che faceva schifo in termini di
performance, soprattutto da mobile.
Ti faccio vedere come l’ho ottimizzata per renderla
più veloce e fare più soldi.
2
Il focus è sul mobile.
AMP rimane la soluzione più veloce, ma
attualmente è forse ancora troppo rigida per l’e-
commerce.
3
Chi sono
• Ex web developer
• Consulente SEO in agenzia
dal 2007
• Consulente freelance da circa
un 1 mese :-)
4
Ottimizzazioni
di partenza
• Server ottimizzato
per Magento2
• HTTP/2
• Compressione Brotli
• Minificazione e
concatenazione file
JavaScript e CSS
• Caching lato server
e HTTP
5
Dicevamo… focus sul mobile
Test con connessione simulata «Fast 3G».
Strumenti per audit e simulazioni:
6
LIGHTHOUSE GOOGLE PAGESPEED
INSIGHT
=
WEB PAGE TEST
Perché connessione Fast 3G
È la connessione simulata da Google PageSpeed e che
dovrebbe rappresentare circa il 25% delle connessioni
3G più veloci e il 25% delle 4G più lente.
7
1.6 Mbps
DOWNLOAD
750 Kbps
UPLOAD
150 Ms
LATENZA
8
In Lighthose
selezionando
«Applied Fast
3G» si hanno
risultati più
simili a Google
Pagespeed
Le velocità delle connessioni in Italia sono
mediamente migliori
9
Fonte: https://www.opensignal.com/reports/2018/10/italy/mobile-networks-update
Google Page Speed
FYI
10
Lighthose può essere installato e lanciato da riga
di comando, permettendo una configurazione più
precisa degli audit e una più facile automazione.
https://github.com/GoogleChrome/lighthouse
lighthouse --throttling.throughputKbps=11000 --throttling.requestLatencyMs=150 --
throttling.downloadThroughputKbps=11000 --throttling.uploadThroughputKbps=750
https://example.com
Partiamo dalla fine: i risultati
delle ottimizzazioni
11
PRIMA DOPO
12
Simulazione connessione 3G con WebPageTest.org
Painting in <3s
Una nota sulle metriche
13
Metriche legate al painting (velocità percepita)
Speed Index formula
14
https://sites.google.com/a/webpagetest.org/docs/using-webpagetest/metrics/speed-index
Una nota sulle metriche
15
Metriche legate all’interattività
Una nota sulle metriche
16
Metrica legate alla lunghezza delle performance (ottima
per confronti tra competitors)
Primo audit con Lighthouse
17
Analisi delle richieste con Chrome
DevTools > Network (Fast 3G)
18
1.4 MB e 14.47
secondi?! :O
Rimuoviamo qualche “ottimizzazione” di
Magento
19
Effetti della modifica
20
30 -> 200
RICHIESTE HTTP
2MB -> 1MB
TRASFERITI
Impatto sulle performance
21
Perché non utilizzare quelle impostazioni
HTTP/1.1:
• Una connessione per ogni
richiesta HTTP e un numero
limitato di richieste in parallelo
• Concatenare i file per ridurre
le richieste
• Usare diversi domini per
parallelizzare i download
• Servire contenuti statici da
domini senza cookie
HTTP/2 supera alcuni limiti del
protocollo:
• Tutte le richieste passano dalla
stessa connessione con il server
(Multiplexing), il numero di
richieste in parallelo non sono
un problema
• Header compression
22
Per sfruttare HTTP/2 meglio più richieste
asincrone
Caricare file JavaScript in modo asincrono
23
defer, async requireJS
(come funziona Magento2 non “ottimizzato”)
Cerchiamo di migliorare l’interattività
24
Dobbiamo ridurre la quantità di
JavaScript
25
Dobbiamo ridurre la quantità di
JavaScript
26
Dobbiamo ridurre la quantità di
JavaScript
È un lavoro sporco:
• Rimuovere codice non utilizzato
• Rinunciare a funzionalità poco utilizzate
27
Risultato
28
Ottimizzazioni facili con alto
impatto per l’e-commerce: le
immagini
29
LazyLoading
30
Modulo per Magento2
https://www.weltpixel.com/magento-2-lazy-load-product-extension.html
Per ogni altro CMS
https://www.google.it
Verificare che il LazyLoading sia
Googlebot Friendly
1. Installare Node.js
https://nodejs.org/en/
2. Installare Puppeteer (Chrome + Web
DevTools da riga di comando)
https://github.com/GoogleChrome/puppeteer
3. Eseguire lo script
https://github.com/GoogleChromeLabs/puppeteer-
examples/blob/master/lazyimages_without_scroll_events.js
31
Non sempre Googlebot supporta il LazyLoading dei
contenuti. Per esserne “quasi” sicuri:
npm install puppeteer
node lazyimages_without_scroll_events.js
--url=https://example.com/
--output=results.html
32
Compressione immagini senza perdita di
qualità
33
Ottimizzazione di tutte le immagini di Magento (o
di qualsiasi altro CMS/sito web).
find pub/media -type f -name "*.jpg" -exec jpegoptim --strip-all --all-progressive {} ;
find pub/media -type f -name "*.png" -exec optipng -o7 {} ;
Ottimizzare JPG
con jpegoptim
Ottimizzare JPG
con optipng
Ottimizzazioni dei CSS
34
Individuare regole non utilizzate con
Chrome
35
Individuare regole non utilizzate con
Chrome
36
Il 75-90% delle
regole non sono
utilizzate
Obiettivo
• Creare un CSS con le regole strettamente necessarie per ogni
tipologia di pagina:
• home.css
• category.css
• product.css
• Ad ogni pagina applicare lo specifico CSS e salvare in cache i
CSS per le altre pagine.
37
Come estrarre le regole per
ogni pagina?
38
39
Con un tool
online
https://uncss-online.com/
40
Con una libreria di
Node.js
https://github.com/GoogleChrome/puppeteer
https://github.com/peterbe/minimalcss
C’è un problema
Quando l’utente interagisce con un sito, JavaScript
può modificare il DOM.
Questi strumenti rimuovono anche i CSS relativi al
DOM modificato.
41
42
Si può usare un libreria di
Node.js maggiormente
configurabile
https://gruntjs.com/
https://github.com/uncss/grunt-uncss
43
Long story short:
Ogni pagina
include un suo
CSS ridotto del
90%
Pre-caching
44
Link da aggiungere nell’HEAD o come intestazione
HTTP:
In alternativa via JavaScript con i Service Workers
https://developers.google.com/web/ilt/pwa/caching-files-with-service-worker
45
https://github.com/filamentgroup/loadCSS
(Opzionale) Caricare in modo asincrono il
CSS completo
Ridotto al minimo il codice
CSS e JavaScript «critico»,
velocizziamone il caricamento
46
HTTP/1.1
• Inserimento “inline” nell’HTML
di CSS e JavaScript sincroni
HTTP/2
• HTTP/2 Server Push (può
potenzialmente sfruttare la
cache del browser)
47
HTTP/2 Server Push per Magento2
Modulo Yireo_LinkPreload:
https://github.com/yireo/Yireo_LinkPreload
(consiglio di modificarlo per evitare il push delle immagini)
48
Qualcosa sui font
49
Come si comportano i browser per
l’inclusione di font esterno
50
Testo invisibile
Testo con font
di fallback
Re-rendering
del testo
PRIMA DEL
CARICAMENTO
DEL FONT
SE IL FONT
RITARDA
QUANDO IL FONT
VIENE CARICATO
IE/Edge
https://developers.google.com/web/updates/2016/02/font-display
51
Per font locali si può usare font-display
In alternativa: usare font di sistema «belli»
52
https://getbootstrap.com/docs/4.0/content/reboot/#native-font-stack
Utilizzare un elenco di
font di sistema di diversi
dispositive e sistemi
(Native font stack)
Metodo utilizzato in
Bootstrap 4.
PRIMA DOPO
53
Windows 10
Open Sans vs Segoe UI
PRIMA DOPO
54
Android
Open Sans vs Roboto
Tag di terze parti (tracking, remarketing,
Ads,…)
Problema: Creano richieste verso domini non presenti nel codice
HTML inizialmente analizzato dal browser.
Per ridurre il problema: consigliare al browser di preconnettersi
utilizzando il seguente tag nell’HEAD del documento (o come
HEADER HTTP):
55
<link href="https://cdn.domain.com" rel="preconnect" crossorigin>
Individuare richieste di terze parti da
ottimizzare
56
Dominio e Initiator diversi dalla pagina
analizzata? Abbiamo un problema
Risultato finale
57
Soldi potenzialmente guadagnati
58
https://www.thinkwithgoogle.com/intl/it-it/feature/testmysite
Altri benefici
59
Visibilità SEO
• Segnale di ranking per ricerche desktop dal 2010:
https://webmasters.googleblog.com/2010/04/using-site-speed-
in-web-search-ranking.html
• … e per le ricerche mobile dal 2018
https://webmasters.googleblog.com/2018/01/using-page-
speed-in-mobile-search.html
60
Sempre più attenzione anche in Google
Ads
• Dal 2018 è stato introdotto il Mobile Speed Score in Google
Ads: https://support.google.com/google-ads/answer/9069088
• Nel 2019 è stato aggiornato l’algoritmo per fornire dati su un
numero maggiore di landing pages:
https://support.google.com/google-ads/answer/9238823
61
Risparmio banda per CDN e servizi a
consumo
62
Key takeaways
• Caricare JS asincrono
• Ridurre al minimo codice non utilizzato (JS e CSS)
• LazyLoading e ottimizzazione delle immagini
• Ottimizzare i tag di terze parti
• Valutare l’utilizzo di font di sistema
• Valutare l’utilizzo di AMP:
https://marketplace.magento.com/plumrocket-module-pramp.html
(modulo per Magento2)
63
Grazie
#seriousmonkeyfrancesco.terenzani@smartguys.it

Contenu connexe

Tendances

Introduzione a node: cenni storici ecc
Introduzione a node: cenni storici eccIntroduzione a node: cenni storici ecc
Introduzione a node: cenni storici eccLuciano Colosio
 
Oltre il Worker Role, da Serverless computing a VM Scale Set
Oltre il Worker Role, da Serverless computing a VM Scale SetOltre il Worker Role, da Serverless computing a VM Scale Set
Oltre il Worker Role, da Serverless computing a VM Scale SetVito Flavio Lorusso
 
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
 
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
 
Blazor - i limiti sono fatti per essere superati
Blazor - i limiti sono fatti per essere superatiBlazor - i limiti sono fatti per essere superati
Blazor - i limiti sono fatti per essere superatiCommit University
 
Frontend Development with Blazor
Frontend Development with BlazorFrontend Development with Blazor
Frontend Development with BlazorMichele Aponte
 
Search Engine Optimization (Parte 1)
Search Engine Optimization (Parte 1)Search Engine Optimization (Parte 1)
Search Engine Optimization (Parte 1)brossi676
 
Blazor Focus Week Bari
Blazor Focus Week BariBlazor Focus Week Bari
Blazor Focus Week BariMichele Aponte
 
Ottimizzare WordPress su Windows/IIS
Ottimizzare WordPress su Windows/IISOttimizzare WordPress su Windows/IIS
Ottimizzare WordPress su Windows/IISpietrobr
 
Come velocizzare un sito web | Corso SEO a Bologna
Come velocizzare un sito web | Corso SEO a BolognaCome velocizzare un sito web | Corso SEO a Bologna
Come velocizzare un sito web | Corso SEO a BolognaWeb2Lab Studio
 
Costruisci il tuo sito con WebSite: le risposte alle vostre domande
Costruisci il tuo sito con WebSite: le risposte alle vostre domande Costruisci il tuo sito con WebSite: le risposte alle vostre domande
Costruisci il tuo sito con WebSite: le risposte alle vostre domande Register.it
 
I Temi in WordPress
I Temi in WordPress I Temi in WordPress
I Temi in WordPress Thomas Vitale
 
Progressive Web App per presentazione Skills&More
Progressive Web App per presentazione Skills&MoreProgressive Web App per presentazione Skills&More
Progressive Web App per presentazione Skills&MoreFrancescoGiammanco1
 
WordPress, migrazioni e re-branding: don't try this at home. #wmf15
WordPress, migrazioni e re-branding: don't try this at home. #wmf15WordPress, migrazioni e re-branding: don't try this at home. #wmf15
WordPress, migrazioni e re-branding: don't try this at home. #wmf15Andrea Cardinali
 

Tendances (19)

Introduzione a node: cenni storici ecc
Introduzione a node: cenni storici eccIntroduzione a node: cenni storici ecc
Introduzione a node: cenni storici ecc
 
Oltre il Worker Role, da Serverless computing a VM Scale Set
Oltre il Worker Role, da Serverless computing a VM Scale SetOltre il Worker Role, da Serverless computing a VM Scale Set
Oltre il Worker Role, da Serverless computing a VM Scale Set
 
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...
 
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...
 
Blazor - i limiti sono fatti per essere superati
Blazor - i limiti sono fatti per essere superatiBlazor - i limiti sono fatti per essere superati
Blazor - i limiti sono fatti per essere superati
 
Frontend Development with Blazor
Frontend Development with BlazorFrontend Development with Blazor
Frontend Development with Blazor
 
Search Engine Optimization (Parte 1)
Search Engine Optimization (Parte 1)Search Engine Optimization (Parte 1)
Search Engine Optimization (Parte 1)
 
Introduzione a node.js
Introduzione a node.jsIntroduzione a node.js
Introduzione a node.js
 
Blazor Focus Week Bari
Blazor Focus Week BariBlazor Focus Week Bari
Blazor Focus Week Bari
 
Grasso
GrassoGrasso
Grasso
 
Ottimizzare WordPress su Windows/IIS
Ottimizzare WordPress su Windows/IISOttimizzare WordPress su Windows/IIS
Ottimizzare WordPress su Windows/IIS
 
Come velocizzare un sito web | Corso SEO a Bologna
Come velocizzare un sito web | Corso SEO a BolognaCome velocizzare un sito web | Corso SEO a Bologna
Come velocizzare un sito web | Corso SEO a Bologna
 
Web frameworks
Web frameworksWeb frameworks
Web frameworks
 
Costruisci il tuo sito con WebSite: le risposte alle vostre domande
Costruisci il tuo sito con WebSite: le risposte alle vostre domande Costruisci il tuo sito con WebSite: le risposte alle vostre domande
Costruisci il tuo sito con WebSite: le risposte alle vostre domande
 
WebSphere Portal e WCM #dd12
WebSphere Portal e WCM #dd12WebSphere Portal e WCM #dd12
WebSphere Portal e WCM #dd12
 
IBM WCM e SEO
IBM WCM e SEOIBM WCM e SEO
IBM WCM e SEO
 
I Temi in WordPress
I Temi in WordPress I Temi in WordPress
I Temi in WordPress
 
Progressive Web App per presentazione Skills&More
Progressive Web App per presentazione Skills&MoreProgressive Web App per presentazione Skills&More
Progressive Web App per presentazione Skills&More
 
WordPress, migrazioni e re-branding: don't try this at home. #wmf15
WordPress, migrazioni e re-branding: don't try this at home. #wmf15WordPress, migrazioni e re-branding: don't try this at home. #wmf15
WordPress, migrazioni e re-branding: don't try this at home. #wmf15
 

Similaire à WPO: Ottimizzazione step-by-step del front-end di un e-commerce

Applicazioni HTML5 Superveloci - Salvatore Romeo
Applicazioni HTML5 Superveloci - Salvatore RomeoApplicazioni HTML5 Superveloci - Salvatore Romeo
Applicazioni HTML5 Superveloci - Salvatore Romeomarcocasario
 
Alessandro Forte - ASP.Net 4.0
Alessandro Forte - ASP.Net 4.0Alessandro Forte - ASP.Net 4.0
Alessandro Forte - ASP.Net 4.0Alessandro Forte
 
Working between the clouds (versione completa)
Working between the clouds (versione completa)Working between the clouds (versione completa)
Working between the clouds (versione completa)Davide Cerbo
 
ASP.NET performance optimization
ASP.NET performance optimizationASP.NET performance optimization
ASP.NET performance optimizationAndrea Dottor
 
Hosting: come ottimizzare WordPress #TipOfTheDay
Hosting: come ottimizzare WordPress #TipOfTheDayHosting: come ottimizzare WordPress #TipOfTheDay
Hosting: come ottimizzare WordPress #TipOfTheDayAruba S.p.A.
 
Presentazione Corso - Parte 3
Presentazione Corso - Parte 3Presentazione Corso - Parte 3
Presentazione Corso - Parte 3Giorgio Carpoca
 
Come si può velocizzare un sito web?
Come si può velocizzare un sito web?Come si può velocizzare un sito web?
Come si può velocizzare un sito web?Web2Lab Studio
 
Stanco delle solite Web App? Passa al Prgressive
Stanco delle solite Web App? Passa al PrgressiveStanco delle solite Web App? Passa al Prgressive
Stanco delle solite Web App? Passa al PrgressiveCommit University
 
Php On Windows For Ph Pday 2008
Php On Windows For Ph Pday 2008Php On Windows For Ph Pday 2008
Php On Windows For Ph Pday 2008pietrobr
 
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
 
WebSphere Portal & User Experience
WebSphere Portal & User ExperienceWebSphere Portal & User Experience
WebSphere Portal & User ExperienceAndrea Fontana
 
Integrazione continua con TFS Build
Integrazione continua con TFS BuildIntegrazione continua con TFS Build
Integrazione continua con TFS BuildGian Maria Ricci
 
Working between the clouds
Working between the cloudsWorking between the clouds
Working between the cloudsDavide Cerbo
 
Technical SEO Audit Checklist - Giovanni Sacheli Search Marketing Connect 2018
Technical SEO Audit Checklist - Giovanni Sacheli Search Marketing Connect 2018Technical SEO Audit Checklist - Giovanni Sacheli Search Marketing Connect 2018
Technical SEO Audit Checklist - Giovanni Sacheli Search Marketing Connect 2018Giovanni Sacheli
 
Hosting: WordPress, Joomla e altri cms: la scelta giusta #TipOfTheDay
Hosting: WordPress, Joomla e altri cms: la scelta giusta #TipOfTheDayHosting: WordPress, Joomla e altri cms: la scelta giusta #TipOfTheDay
Hosting: WordPress, Joomla e altri cms: la scelta giusta #TipOfTheDayAruba S.p.A.
 

Similaire à WPO: Ottimizzazione step-by-step del front-end di un e-commerce (20)

Applicazioni HTML5 Superveloci - Salvatore Romeo
Applicazioni HTML5 Superveloci - Salvatore RomeoApplicazioni HTML5 Superveloci - Salvatore Romeo
Applicazioni HTML5 Superveloci - Salvatore Romeo
 
Velocità sito web
Velocità sito webVelocità sito web
Velocità sito web
 
Alessandro Forte - ASP.Net 4.0
Alessandro Forte - ASP.Net 4.0Alessandro Forte - ASP.Net 4.0
Alessandro Forte - ASP.Net 4.0
 
Microsoft Fast - Overview
Microsoft Fast - OverviewMicrosoft Fast - Overview
Microsoft Fast - Overview
 
Working between the clouds (versione completa)
Working between the clouds (versione completa)Working between the clouds (versione completa)
Working between the clouds (versione completa)
 
ASP.NET performance optimization
ASP.NET performance optimizationASP.NET performance optimization
ASP.NET performance optimization
 
Wpo extended
Wpo extendedWpo extended
Wpo extended
 
Hosting: come ottimizzare WordPress #TipOfTheDay
Hosting: come ottimizzare WordPress #TipOfTheDayHosting: come ottimizzare WordPress #TipOfTheDay
Hosting: come ottimizzare WordPress #TipOfTheDay
 
Presentazione Corso - Parte 3
Presentazione Corso - Parte 3Presentazione Corso - Parte 3
Presentazione Corso - Parte 3
 
WordCamp Catania 2019 PWA e TWA
WordCamp Catania 2019 PWA e TWAWordCamp Catania 2019 PWA e TWA
WordCamp Catania 2019 PWA e TWA
 
Come si può velocizzare un sito web?
Come si può velocizzare un sito web?Come si può velocizzare un sito web?
Come si può velocizzare un sito web?
 
Novità di Asp.Net 4.0
Novità di Asp.Net 4.0Novità di Asp.Net 4.0
Novità di Asp.Net 4.0
 
Stanco delle solite Web App? Passa al Prgressive
Stanco delle solite Web App? Passa al PrgressiveStanco delle solite Web App? Passa al Prgressive
Stanco delle solite Web App? Passa al Prgressive
 
Php On Windows For Ph Pday 2008
Php On Windows For Ph Pday 2008Php On Windows For Ph Pday 2008
Php On Windows For Ph Pday 2008
 
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?
 
WebSphere Portal & User Experience
WebSphere Portal & User ExperienceWebSphere Portal & User Experience
WebSphere Portal & User Experience
 
Integrazione continua con TFS Build
Integrazione continua con TFS BuildIntegrazione continua con TFS Build
Integrazione continua con TFS Build
 
Working between the clouds
Working between the cloudsWorking between the clouds
Working between the clouds
 
Technical SEO Audit Checklist - Giovanni Sacheli Search Marketing Connect 2018
Technical SEO Audit Checklist - Giovanni Sacheli Search Marketing Connect 2018Technical SEO Audit Checklist - Giovanni Sacheli Search Marketing Connect 2018
Technical SEO Audit Checklist - Giovanni Sacheli Search Marketing Connect 2018
 
Hosting: WordPress, Joomla e altri cms: la scelta giusta #TipOfTheDay
Hosting: WordPress, Joomla e altri cms: la scelta giusta #TipOfTheDayHosting: WordPress, Joomla e altri cms: la scelta giusta #TipOfTheDay
Hosting: WordPress, Joomla e altri cms: la scelta giusta #TipOfTheDay
 

WPO: Ottimizzazione step-by-step del front-end di un e-commerce