SlideShare uma empresa Scribd logo
1 de 21
Baixar para ler offline
Web performance & Http2
https://giko.it
@giacomozinetti
1
25 Ottobre 2016
Prima di cominciare
quiz.giko.it
2
A long time ago in an Internet far,
far away....
3
… il web era per i documenti
HTTP per comunicare
http://info.cern.ch/hypertext/WWW/TheProject.html
e HTML per descrivere i contenuti
<HEADER>
<TITLE>Sei tu un Dio?</TITLE>
<NEXTID N="55">
</HEADER>
4
Abbiamo voluto colorare i nostri testi
.blue-steel {
background-color: #bada55;
color: blue;
}
5
E creare interazione
var msg = "Shall we play a game?";
function scrollMsg() {
window.status = msg;
msg = msg.substring(1,msg.length) + msg.substring(0,1);
setTimeout("scrollMsg()",150);
}
6
Poi è successo
qualcosa
Verso l’infinito e oltre!
7
Abbiamo provato a rimediare
Web: Troppe richieste HTTP!
Devs: Il ricorso alla violenza anche non necessaria per ridurre i file è ammesso e
approvato.
● Concatenazione di js e css
● Creazione sprite di immagini
Conseguenza: introduzione di tool di build
8
Abbiamo provato a rimediare
Web: I file sono troppo pesanti!
Devs: Potrebbe esser peggio. Potrebbe piovere!
● Gzip
● PNG e WebP, immagini responsive
● Minifier
Conseguenza: introduzione di altri tool di build e aumento del carico sul processore
9
Abbiamo provato a rimediare
Web: Troppe connessioni TCP! Te ne concedo solo [X] simultanee per dominio. Inoltre per
ogni asset sul tuo dominio devo inviare [N]Kb di cookie inutili.
Devs: Sai, questo... questo è un caso molto, molto complicato. Un sacco di input e di
output.
● Domain sharding su CDN cookieless
Prezzo da pagare: cambiamento nelle strategie di deploy
10
Abbiamo provato a rimediare
Web: Per ogni dominio che usi devo risolvere i DNS...
Devs: Questo è solo un altro dei tuoi tracobbetti.
● DNS prefetching
Prezzo da pagare: aggiustamenti nel markup
11
Abbiamo provato a rimediare
Web: I tuoi asset bloccano il rendering dei browser.
Devs: Un JS non è mai in ritardo. Né in anticipo. Arriva precisamente quando intende
farlo.
● AJAX
● Inlining di CSS e JS
Prezzo da pagare: nuove logiche applicative da sviluppare
12
HTTP 2Gli farò un'offerta che non potrà rifiutare.
13
Where we're going, we don't need roads…
● Single Connection
● Multiplexing
● Server Push
● Prioritization
● Binary
● Header Compression
14
Supporto
● Chrome (solo se il server supporta ALPN)
● Firefox
● Edge
● Opera
● Safari
● IE 11 +
E in caso HTTP2 non sia supportato in automatico il sito verrà servito in HTTP1.
Devs: Toga! Toga!
Tutti i browser supportano HTTP2 solo con TLS (HTTPS) http://caniuse.com/#feat=http2
15
Come avere HTTP2
● H2O
● Caddy
● NGINX 1.9.5 (tranne server push)
● Apache con mod_http2 (sperimentale)
● E molti altri https://github.com/http2/http2-spec/wiki/Implementations
Dovete scegliere tra questi... Ma scegliete con prudenza: poiché se il giusto Server vi donerà
la vita, quello sbagliato ve la strapperà via.
16
Okay guys, it's show time!
17
● https://http1.giko.it
● https://http2.giko.it
● https://http2push.giko.it:8080
https://www.webpagetest.org/video/compare.php?tests=161013_9Y_P54,161013_T4_P55,161013_81_P56
● https://http1.giko.it/slow.html
● https://http2.giko.it/slow.html
● https://http2push.giko.it:8080/slow.html
https://www.webpagetest.org/video/compare.php?tests=161014_J3_CBK,161014_Z9_CBM,161014_Q0_CEH
I detective non hanno il permesso di credere alle coincidenze
18
Perceived performance
The cake is almost a lie
19
The Show Must
Go On
HTTPS con Let’s encrypt
https://letsencrypt.org/
20
So long and thanks for all the fish meat
21

Mais conteúdo relacionado

Mais procurados

Applicazioni HTML5 Superveloci - Salvatore Romeo
Applicazioni HTML5 Superveloci - Salvatore RomeoApplicazioni HTML5 Superveloci - Salvatore Romeo
Applicazioni HTML5 Superveloci - Salvatore Romeomarcocasario
 
Back to Basics 4: Introduzione al partizionamento orizzontale (sharding)
Back to Basics 4: Introduzione al partizionamento orizzontale (sharding)Back to Basics 4: Introduzione al partizionamento orizzontale (sharding)
Back to Basics 4: Introduzione al partizionamento orizzontale (sharding)MongoDB
 
Back to Basics, webinar 6: Messa in esercizio
Back to Basics, webinar 6: Messa in esercizioBack to Basics, webinar 6: Messa in esercizio
Back to Basics, webinar 6: Messa in esercizioMongoDB
 
Creare un tema personalizzato per wordpress
Creare un tema personalizzato per wordpressCreare un tema personalizzato per wordpress
Creare un tema personalizzato per wordpressGGDBologna
 
Node js: che cos'è e a che cosa serve?
Node js: che cos'è e a che cosa serve?Node js: che cos'è e a che cosa serve?
Node js: che cos'è e a che cosa serve?Flavius-Florin Harabor
 
Creating Highly-Available MongoDB Microservices with Docker Containers and Ku...
Creating Highly-Available MongoDB Microservices with Docker Containers and Ku...Creating Highly-Available MongoDB Microservices with Docker Containers and Ku...
Creating Highly-Available MongoDB Microservices with Docker Containers and Ku...MongoDB
 
Drupal Day 2011 - Node.js e Drupal
Drupal Day 2011 - Node.js e DrupalDrupal Day 2011 - Node.js e Drupal
Drupal Day 2011 - Node.js e DrupalDrupalDay
 
Miglioriamo le performance di wordpress
Miglioriamo le performance di wordpress Miglioriamo le performance di wordpress
Miglioriamo le performance di wordpress GGDBologna
 
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
 
Build a SQL Server machine - the right way (Italian)
Build a SQL Server machine - the right way (Italian)Build a SQL Server machine - the right way (Italian)
Build a SQL Server machine - the right way (Italian)Danilo Dominici
 
Seminario team working - 21-1-2015
Seminario team working - 21-1-2015Seminario team working - 21-1-2015
Seminario team working - 21-1-2015Alessandro Loffredo
 

Mais procurados (14)

Web frameworks
Web frameworksWeb frameworks
Web frameworks
 
Applicazioni HTML5 Superveloci - Salvatore Romeo
Applicazioni HTML5 Superveloci - Salvatore RomeoApplicazioni HTML5 Superveloci - Salvatore Romeo
Applicazioni HTML5 Superveloci - Salvatore Romeo
 
Back to Basics 4: Introduzione al partizionamento orizzontale (sharding)
Back to Basics 4: Introduzione al partizionamento orizzontale (sharding)Back to Basics 4: Introduzione al partizionamento orizzontale (sharding)
Back to Basics 4: Introduzione al partizionamento orizzontale (sharding)
 
Back to Basics, webinar 6: Messa in esercizio
Back to Basics, webinar 6: Messa in esercizioBack to Basics, webinar 6: Messa in esercizio
Back to Basics, webinar 6: Messa in esercizio
 
Creare un tema personalizzato per wordpress
Creare un tema personalizzato per wordpressCreare un tema personalizzato per wordpress
Creare un tema personalizzato per wordpress
 
Madaudo
MadaudoMadaudo
Madaudo
 
Node js: che cos'è e a che cosa serve?
Node js: che cos'è e a che cosa serve?Node js: che cos'è e a che cosa serve?
Node js: che cos'è e a che cosa serve?
 
Creating Highly-Available MongoDB Microservices with Docker Containers and Ku...
Creating Highly-Available MongoDB Microservices with Docker Containers and Ku...Creating Highly-Available MongoDB Microservices with Docker Containers and Ku...
Creating Highly-Available MongoDB Microservices with Docker Containers and Ku...
 
Drupal Day 2011 - Node.js e Drupal
Drupal Day 2011 - Node.js e DrupalDrupal Day 2011 - Node.js e Drupal
Drupal Day 2011 - Node.js e Drupal
 
Web 2.0 sviluppare e ottimizzare oggi
Web 2.0 sviluppare e ottimizzare oggiWeb 2.0 sviluppare e ottimizzare oggi
Web 2.0 sviluppare e ottimizzare oggi
 
Miglioriamo le performance di wordpress
Miglioriamo le performance di wordpress Miglioriamo le performance di wordpress
Miglioriamo le performance di wordpress
 
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...
 
Build a SQL Server machine - the right way (Italian)
Build a SQL Server machine - the right way (Italian)Build a SQL Server machine - the right way (Italian)
Build a SQL Server machine - the right way (Italian)
 
Seminario team working - 21-1-2015
Seminario team working - 21-1-2015Seminario team working - 21-1-2015
Seminario team working - 21-1-2015
 

Destaque

Destaque (6)

CSS performance
CSS performanceCSS performance
CSS performance
 
One step in the future: CSS variables
One step in the future: CSS variablesOne step in the future: CSS variables
One step in the future: CSS variables
 
CSS from the future
CSS from the futureCSS from the future
CSS from the future
 
ES2015 New Features
ES2015 New FeaturesES2015 New Features
ES2015 New Features
 
Css figli di un dio minore
Css figli di un dio minoreCss figli di un dio minore
Css figli di un dio minore
 
Bootstrap 4 is Coming!
Bootstrap 4 is Coming!Bootstrap 4 is Coming!
Bootstrap 4 is Coming!
 

Semelhante a Web performance & Http2

WPO: Ottimizzazione step-by-step del front-end di un e-commerce
WPO: Ottimizzazione step-by-step del front-end di un e-commerceWPO: Ottimizzazione step-by-step del front-end di un e-commerce
WPO: Ottimizzazione step-by-step del front-end di un e-commerceFrancesco Terenzani
 
Introduzione alla localizzazione web
Introduzione alla localizzazione webIntroduzione alla localizzazione web
Introduzione alla localizzazione webQabiria
 
Polyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDB
Polyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDBPolyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDB
Polyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDBSteve Maraspin
 
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
 
Chrome DevTools: le basi tecniche per comprendere meglio la SEO
Chrome DevTools: le basi tecniche per comprendere meglio la SEOChrome DevTools: le basi tecniche per comprendere meglio la SEO
Chrome DevTools: le basi tecniche per comprendere meglio la SEOGiovanni Sacheli
 
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 DevicesAndrea Picchi
 
Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente
Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente
Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente Andrea Dottor
 
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
 
Succo di lampone: come ottimizzare JAVA e PHP su un'architettura Raspberry Pi...
Succo di lampone: come ottimizzare JAVA e PHP su un'architettura Raspberry Pi...Succo di lampone: come ottimizzare JAVA e PHP su un'architettura Raspberry Pi...
Succo di lampone: come ottimizzare JAVA e PHP su un'architettura Raspberry Pi...Codemotion
 
Codemotion 2014 : ottimizzare JAVA e PHP su un’architettura Raspberry Pi Cluster
Codemotion 2014 : ottimizzare JAVA e PHP su un’architettura Raspberry Pi ClusterCodemotion 2014 : ottimizzare JAVA e PHP su un’architettura Raspberry Pi Cluster
Codemotion 2014 : ottimizzare JAVA e PHP su un’architettura Raspberry Pi ClusterMatteo Baccan
 
Matteo Bicocchi - Introducing HTML5
Matteo Bicocchi - Introducing HTML5Matteo Bicocchi - Introducing HTML5
Matteo Bicocchi - Introducing HTML5Pietro Polsinelli
 
HTML5 e Css3 - 3 | WebMaster & WebDesigner
HTML5 e Css3 - 3 | WebMaster & WebDesignerHTML5 e Css3 - 3 | WebMaster & WebDesigner
HTML5 e Css3 - 3 | WebMaster & WebDesignerMatteo Magni
 
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
 

Semelhante a Web performance & Http2 (20)

Html5
Html5Html5
Html5
 
Velocità sito web
Velocità sito webVelocità sito web
Velocità sito web
 
WPO: Ottimizzazione step-by-step del front-end di un e-commerce
WPO: Ottimizzazione step-by-step del front-end di un e-commerceWPO: Ottimizzazione step-by-step del front-end di un e-commerce
WPO: Ottimizzazione step-by-step del front-end di un e-commerce
 
Node and the Cloud
Node and the CloudNode and the Cloud
Node and the Cloud
 
Introduzione alla localizzazione web
Introduzione alla localizzazione webIntroduzione alla localizzazione web
Introduzione alla localizzazione web
 
Polyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDB
Polyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDBPolyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDB
Polyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDB
 
HTML 5 e browser legacy
HTML 5 e browser legacyHTML 5 e browser legacy
HTML 5 e browser legacy
 
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
 
Chrome DevTools: le basi tecniche per comprendere meglio la SEO
Chrome DevTools: le basi tecniche per comprendere meglio la SEOChrome DevTools: le basi tecniche per comprendere meglio la SEO
Chrome DevTools: le basi tecniche per comprendere meglio la SEO
 
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
 
Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente
Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente
Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente
 
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
 
Succo di lampone: come ottimizzare JAVA e PHP su un'architettura Raspberry Pi...
Succo di lampone: come ottimizzare JAVA e PHP su un'architettura Raspberry Pi...Succo di lampone: come ottimizzare JAVA e PHP su un'architettura Raspberry Pi...
Succo di lampone: come ottimizzare JAVA e PHP su un'architettura Raspberry Pi...
 
Codemotion 2014 : ottimizzare JAVA e PHP su un’architettura Raspberry Pi Cluster
Codemotion 2014 : ottimizzare JAVA e PHP su un’architettura Raspberry Pi ClusterCodemotion 2014 : ottimizzare JAVA e PHP su un’architettura Raspberry Pi Cluster
Codemotion 2014 : ottimizzare JAVA e PHP su un’architettura Raspberry Pi Cluster
 
Matteo Bicocchi - Introducing HTML5
Matteo Bicocchi - Introducing HTML5Matteo Bicocchi - Introducing HTML5
Matteo Bicocchi - Introducing HTML5
 
HTML5 e Css3 - 3 | WebMaster & WebDesigner
HTML5 e Css3 - 3 | WebMaster & WebDesignerHTML5 e Css3 - 3 | WebMaster & WebDesigner
HTML5 e Css3 - 3 | WebMaster & WebDesigner
 
Game matching with SignalR
Game matching with SignalRGame matching with SignalR
Game matching with SignalR
 
Game matching with SignalR
Game matching with SignalRGame matching with SignalR
Game matching with SignalR
 
Working between the clouds (versione completa)
Working between the clouds (versione completa)Working between the clouds (versione completa)
Working between the clouds (versione completa)
 
Web frameworks
Web frameworksWeb frameworks
Web frameworks
 

Web performance & Http2

  • 1. Web performance & Http2 https://giko.it @giacomozinetti 1 25 Ottobre 2016
  • 3. A long time ago in an Internet far, far away.... 3
  • 4. … il web era per i documenti HTTP per comunicare http://info.cern.ch/hypertext/WWW/TheProject.html e HTML per descrivere i contenuti <HEADER> <TITLE>Sei tu un Dio?</TITLE> <NEXTID N="55"> </HEADER> 4
  • 5. Abbiamo voluto colorare i nostri testi .blue-steel { background-color: #bada55; color: blue; } 5
  • 6. E creare interazione var msg = "Shall we play a game?"; function scrollMsg() { window.status = msg; msg = msg.substring(1,msg.length) + msg.substring(0,1); setTimeout("scrollMsg()",150); } 6
  • 7. Poi è successo qualcosa Verso l’infinito e oltre! 7
  • 8. Abbiamo provato a rimediare Web: Troppe richieste HTTP! Devs: Il ricorso alla violenza anche non necessaria per ridurre i file è ammesso e approvato. ● Concatenazione di js e css ● Creazione sprite di immagini Conseguenza: introduzione di tool di build 8
  • 9. Abbiamo provato a rimediare Web: I file sono troppo pesanti! Devs: Potrebbe esser peggio. Potrebbe piovere! ● Gzip ● PNG e WebP, immagini responsive ● Minifier Conseguenza: introduzione di altri tool di build e aumento del carico sul processore 9
  • 10. Abbiamo provato a rimediare Web: Troppe connessioni TCP! Te ne concedo solo [X] simultanee per dominio. Inoltre per ogni asset sul tuo dominio devo inviare [N]Kb di cookie inutili. Devs: Sai, questo... questo è un caso molto, molto complicato. Un sacco di input e di output. ● Domain sharding su CDN cookieless Prezzo da pagare: cambiamento nelle strategie di deploy 10
  • 11. Abbiamo provato a rimediare Web: Per ogni dominio che usi devo risolvere i DNS... Devs: Questo è solo un altro dei tuoi tracobbetti. ● DNS prefetching Prezzo da pagare: aggiustamenti nel markup 11
  • 12. Abbiamo provato a rimediare Web: I tuoi asset bloccano il rendering dei browser. Devs: Un JS non è mai in ritardo. Né in anticipo. Arriva precisamente quando intende farlo. ● AJAX ● Inlining di CSS e JS Prezzo da pagare: nuove logiche applicative da sviluppare 12
  • 13. HTTP 2Gli farò un'offerta che non potrà rifiutare. 13
  • 14. Where we're going, we don't need roads… ● Single Connection ● Multiplexing ● Server Push ● Prioritization ● Binary ● Header Compression 14
  • 15. Supporto ● Chrome (solo se il server supporta ALPN) ● Firefox ● Edge ● Opera ● Safari ● IE 11 + E in caso HTTP2 non sia supportato in automatico il sito verrà servito in HTTP1. Devs: Toga! Toga! Tutti i browser supportano HTTP2 solo con TLS (HTTPS) http://caniuse.com/#feat=http2 15
  • 16. Come avere HTTP2 ● H2O ● Caddy ● NGINX 1.9.5 (tranne server push) ● Apache con mod_http2 (sperimentale) ● E molti altri https://github.com/http2/http2-spec/wiki/Implementations Dovete scegliere tra questi... Ma scegliete con prudenza: poiché se il giusto Server vi donerà la vita, quello sbagliato ve la strapperà via. 16
  • 17. Okay guys, it's show time! 17
  • 18. ● https://http1.giko.it ● https://http2.giko.it ● https://http2push.giko.it:8080 https://www.webpagetest.org/video/compare.php?tests=161013_9Y_P54,161013_T4_P55,161013_81_P56 ● https://http1.giko.it/slow.html ● https://http2.giko.it/slow.html ● https://http2push.giko.it:8080/slow.html https://www.webpagetest.org/video/compare.php?tests=161014_J3_CBK,161014_Z9_CBM,161014_Q0_CEH I detective non hanno il permesso di credere alle coincidenze 18
  • 19. Perceived performance The cake is almost a lie 19
  • 20. The Show Must Go On HTTPS con Let’s encrypt https://letsencrypt.org/ 20
  • 21. So long and thanks for all the fish meat 21