SlideShare a Scribd company logo
HTTP 2.0
@sergio_caelum
sergiolopes.org
REVIEW
HTTP
$ telnet www.alura.com.br 80
Trying 64.233.171.121...
Connected to ghs.googlehosted.com.
Escape character is '^]'.
GET / HTTP/1.1
Host: www.alura.com.br
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Vary: Accept-Encoding,User-Agent
Content-Language: pt-br
Date: Thu, 01 Apr 2017 18:37:18 GMT
Server: Google Frontend
Cache-Control: private
<!DOCTYPE html><html><head><title>Caelum</title>
TEXTO
$ telnet www.alura.com.br 80
Trying 64.233.171.121...
Connected to ghs.googlehosted.com.
Escape character is '^]'.
GET / HTTP/1.1
Host: www.alura.com.br
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Vary: Accept-Encoding,User-Agent
Content-Language: pt-br
Date: Thu, 01 Apr 2017 18:37:18 GMT
Server: Google Frontend
Cache-Control: private
<!DOCTYPE html><html><head><title>Caelum</title>
REQUEST
RESPONSE
$ telnet www.alura.com.br 80
Trying 64.233.171.121...
Connected to ghs.googlehosted.com.
Escape character is '^]'.
GET / HTTP/1.1
Host: www.alura.com.br
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Vary: Accept-Encoding,User-Agent
Content-Language: pt-br
Date: Thu, 01 Apr 2017 18:37:18 GMT
Server: Google Frontend
Cache-Control: private
<!DOCTYPE html><html><head><title>Caelum</title>
...ESPERA...
REQUEST
RESPONSE
$ telnet www.alura.com.br 80
Trying 64.233.171.121...
Connected to ghs.googlehosted.com.
Escape character is '^]'.
GET / HTTP/1.1
Host: www.alura.com.br
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Vary: Accept-Encoding,User-Agent
Content-Language: pt-br
Date: Thu, 01 Apr 2017 18:37:18 GMT
Server: Google Frontend
Cache-Control: private
<!DOCTYPE html><html><head><title>Caelum</title>
MÉTODO E URL
STATUS
RESPOSTA
$ telnet www.alura.com.br 80
Trying 64.233.171.121...
Connected to ghs.googlehosted.com.
Escape character is '^]'.
GET / HTTP/1.1
Host: www.alura.com.br
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Vary: Accept-Encoding,User-Agent
Content-Language: pt-br
Date: Thu, 01 Apr 2017 18:37:18 GMT
Server: Google Frontend
Cache-Control: private
<!DOCTYPE html><html><head><title>Caelum</title>
HEADERS
HEADERS
$ telnet www.alura.com.br 80
Trying 64.233.171.121...
Connected to ghs.googlehosted.com.
Escape character is '^]'.
GET / HTTP/1.1
Host: www.alura.com.br
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Vary: Accept-Encoding,User-Agent
Content-Language: pt-br
Date: Thu, 01 Apr 2017 18:37:18 GMT
Server: Google Frontend
Cache-Control: private
<!DOCTYPE html><html><head><title>Caelum</title>
texto
request > espera > response
headers
HTTP
cliente servidor
cliente servidor
HTTP 1.1
CONEXÃO TCP
REQUEST
REQUEST
CONEXÃO TCP
cliente servidor
REQUEST
REQUEST #2
REQUEST #3
CONEXÃO TCP
cliente servidor
TCP
HANDSHAKE
REQUEST
REQUEST #2
REQUEST #3
cliente servidor
TCP
HANDSHAKE
REQUEST
REQUEST #2
REQUEST #3
cliente servidor
TCP
HANDSHAKE
REQUEST
REQUEST #2
REQUEST #3
cliente servidor
TCP
HANDSHAKE
REQUEST
REQUEST #2
REQUEST #3
cliente servidor
TCP
HANDSHAKE
REQUEST
REQUEST #2
REQUEST #3
cliente servidor
TCP
HANDSHAKE
REQUEST
REQUEST #2
REQUEST #3
de 4 a 8 conexões
OTIMIZAÇÕES WEB
JUNTAR CSS E JS
SPRITES
INLINE DE RECURSOS
GZIP
MINIFICAÇÃO
DOMÍNIOS SEM COOKIES
MÚLTIPLOS HOSTNAMES
diminuir
requests
diminuir
tráfego
paralelizar
requests
O NOVO
HTTP/2
GET / HTTP/1.1
Host: www.alura.com.br
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Content-Language: pt-br
Date: Thu, 01 Apr 2017 18:37:18 GMT
Cache-Control: private
<!DOCTYPE html><html><head><title>Alura</title>
<meta name=viewport content=width=device-width>
<meta name=description content="Cursos online de
tecnologia, programação, front-end, mobile,
design, ux, infra e muito mais"><style>
HTTP/1.1
GET / HTTP/1.1
Host: www.alura.com.br
Accept-Encoding: gzip
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Content-Language: pt-br
Date: Thu, 01 Apr 2017 18:37:18 GMT
Cache-Control: private
Content-Encoding: gzip
Vary: Accept-Encoding
??[mŚ???,l?T?%.?JI?;1?R0??E?д?H{{?un??Tm??:?U?5DI??su?
L??!???ӵm?_?{-??bՓ?u??6?1,W??N?C.?0?f*??ꮘ?BV?????!#m|?
x???L? Q???֝?U?.?MZ跘?M?JN_?I??RNN???}Y??????cM?<?T?l
U????8?Π???id?c?8)E8??%:?$D*ⰹ?????$4???j?F?
((R2[??O?;s???ާy??Fd⒙HK?x?-?$???ȈȈ??????????O
GZIP
HTTP/1.1
?c?8)E8??%:?$
?T?%.?JI?;1?R
,l?T?%.?JI?;1?R
?c?8)E8??%:?$
??[mŚ???,l?T?%.?JI?;1?R0??E?д?H{{?un??Tm??:?U?5DI??su?
L??!???ӵm?_?{-??bՓ?u??6?1,W??N?C.?0?f*??ꮘ?BV?????!#m|?
x???L? Q???֝?U?.?MZ跘?M?JN_?I??RNN???}Y??????cM?<?T?l
U????8?Π???id?c?8)E8??%:?$D*ⰹ?????$4???j?F?
((R2[??O?;s???ާy??Fd⒙HK?x?-?$???ȈȈ??????????O
HPACK
GZIP
HTTP/2.0
?????????
???????
????????
????????
??????????????????????????????????????????????????????????
??????????????????????????????????????????????????????????
??????????????????????????????????????????????????????????
??????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????
HPACK
GZIP
TLS
TLS
HTTP/2.0
TUDO BINÁRIO
HPACK
GZIP*
TLS*
:method: GET
:path: /
Host: www.alura.com.br
Accept: text/html,application/xhtml+xml;q=0.9,image/jpeg
Accept-Encoding: gzip
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2)
Cookie: SID=786dads78asdbad876asdhjvb28
:method: GET
:path: /style.css
Host: www.alura.com.br
Accept: text/html,application/xhtml+xml;q=0.9,image/jpeg
Accept-Encoding: gzip
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2)
Cookie: SID=786dads78asdbad876asdhjvb28
HTTP/1.1
:method: GET
:path: /
Host: www.alura.com.br
Accept: text/html,application/xhtml+xml;q=0.9,image/jpeg
Accept-Encoding: gzip
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2)
Cookie: SID=786dads78asdbad876asdhjvb28
:method: GET
:path: /style.css
Host: www.alura.com.br
Accept: text/html,application/xhtml+xml;q=0.9,image/jpeg
Accept-Encoding: gzip
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2)
Cookie: SID=786dads78asdbad876asdhjvb28
HTTP/1.1
:method: GET
:path: /
Host: www.alura.com.br
Accept: text/html,application/xhtml+xml;q=0.9,image/jpeg
Accept-Encoding: gzip
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2)
Cookie: SID=786dads78asdbad876asdhjvb28
:path: /style.css
HTTP/2.0
:method: GET
:path: /
Host: www.alura.com.br
Accept: text/html,application/xhtml+xml;q=0.9,image/jpeg
Accept-Encoding: gzip
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2)
Cookie: SID=786dads78asdbad876asdhjvb28
:path: /style.css
:path: /main.js
:path: /imagem.jpg
Host: images.caelum.com.br
HTTP/2.0
HEADER TABLES
MENOS BYTES
REQUEST e RESPONSE
STATEFUL
OTIMIZAÇÕES WEB
JUNTAR CSS E JS
SPRITES
INLINE DE RECURSOS
GZIP
MINIFICAÇÃO
DOMÍNIOS SEM COOKIES
diminuir
requests
diminuir
tráfego
paralelizar
requests
MÚLTIPLOS HOSTNAMES
OTIMIZAÇÕES WEB
JUNTAR CSS E JS
SPRITES
INLINE DE RECURSOS
GZIP
MINIFICAÇÃO
DOMÍNIOS SEM COOKIES
diminuir
requests
diminuir
tráfego
paralelizar
requests
MÚLTIPLOS HOSTNAMES
HTTP 1.1 com Keep-Alive
cliente servidor
HTTP 1.1 com Pipelining*
cliente servidor
HTTP 1.1 com Pipelining*
cliente servidor
HTTP 1.1 com Pipelining*
Head of Line Blocking
...
...
cliente servidor
HTTP 2.0 multiplexing
cliente servidor
MULTIPLEXING
1 CONEXÃO TCP
ASSÍNCRONO
InterCon 2016 - HTTP/2 for Web Application Developers
InterCon 2016 - HTTP/2 for Web Application Developers
InterCon 2016 - HTTP/2 for Web Application Developers
OTIMIZAÇÕES WEB
JUNTAR CSS E JS
SPRITES
INLINE DE RECURSOS
GZIP
MINIFICAÇÃO
DOMÍNIOS SEM COOKIES
diminuir
requests
diminuir
tráfego
paralelizar
requests
MÚLTIPLOS HOSTNAMES
OTIMIZAÇÕES WEB
JUNTAR CSS E JS
SPRITES
INLINE DE RECURSOS
GZIP
MINIFICAÇÃO
DOMÍNIOS SEM COOKIES
diminuir
requests
diminuir
tráfego
paralelizar
requests
MÚLTIPLOS HOSTNAMES
OTIMIZAÇÕES WEB
JUNTAR CSS E JS
SPRITES
INLINE DE RECURSOS
GZIP
MINIFICAÇÃO
DOMÍNIOS SEM COOKIES
MÚLTIPLOS HOSTNAMES
diminuir
requests
diminuir
tráfego
paralelizar
requests
INLINE
DIMINUIR REQUESTS
PRIORIZAR CONTEÚDO
priorizar conteúdo
<!DOCTYPE html>
<html>
<head>
<style>
/* estilo para o ATF */
</style>
<script>
/* javascript importante */
</script>
/* javascript pra depois */
<script src="secundario.js" async></script>
</head>
<body>
...
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="estilo.css">
<script src="app.js" async></script>
</head>
<body>
<img src="foto.jpg">
...
<script src="jquery.js"></script>
<script src="plugin.js"></script>
</body>
</html>
priorizar conteúdo
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="estilo.css">
<script src="app.js" async></script>
</head>
<body>
<img src="foto.jpg">
...
<script src="jquery.js"></script>
<script src="plugin.js"></script>
</body>
</html>
priorizar conteúdo
index.html
estilo.css jquery.js
plugin.js
app.js foto.jpg
logo.png
12 8 8 4
4 8
priorizar conteúdo
index.html
app.js
estilo.css
foto.jpg
jquery.js
plugin.js
app.js
estilo.css
foto.jpg
jquery.js
plugin.js
priorizar conteúdo
cliente servidor
index.html
index.html bloqueante
espera
cliente servidor
index.html
app.js
estilo.css
foto.jpg
jquery.js
plugin.js
Server Push
cliente servidor
index.html
app.js
estilo.css
foto.jpg
jquery.js
plugin.js
cliente servidor
Server Push
index.html
style.css
index.html
icone.png
index.html
style.css
index.html
icone.png
cliente servidor
cliente servidor
Server Push Cancelável
SERVER PUSH
PRIORIZAÇÃO
CACHEÁVEL
CANCELÁVEL*
SERVER PUSH
CASPer(cache-aware server-push)
Cache Digests
OTIMIZAÇÕES WEB
JUNTAR CSS E JS
SPRITES
INLINE DE RECURSOS
GZIP
MINIFICAÇÃO
DOMÍNIOS SEM COOKIES
diminuir
requests
diminuir
tráfego
paralelizar
requests
MÚLTIPLOS HOSTNAMES
OTIMIZAÇÕES WEB
JUNTAR CSS E JS
SPRITES
INLINE DE RECURSOS
GZIP
MINIFICAÇÃO
DOMÍNIOS SEM COOKIES
diminuir
requests
diminuir
tráfego
paralelizar
requests
MÚLTIPLOS HOSTNAMES
HTTP/2
COMPRESSÃO
CRIPTOGRAFIA
MULTIPLEXING
SERVER PUSH
PRIORIZAÇÃO
+MOBILE
+FÁCIL+PERFORMANCE
BINÁRIO
+COMPATÍVEL +SEGURO
+LEVE
OBRIGADO!
sergiolopes.org
@sergio_caelum

More Related Content

PDF
GraphQL, l'avenir du REST par François ZANINOTTO
PPTX
lec6
PDF
CITEC #CON2-Dirty Attack with Google Hacking
PDF
PowerDNS Webinar
PPTX
SnorGen User Guide 2.0
PDF
Encryption: It's For More Than Just Passwords
PDF
ODS Packages
PDF
gRPC vs REST: let the battle begin!
GraphQL, l'avenir du REST par François ZANINOTTO
lec6
CITEC #CON2-Dirty Attack with Google Hacking
PowerDNS Webinar
SnorGen User Guide 2.0
Encryption: It's For More Than Just Passwords
ODS Packages
gRPC vs REST: let the battle begin!

Viewers also liked (9)

PPTX
InterCon 2016 - Desenvolvimento para interfaces em vídeo e cases da plataform...
PPTX
Testes O que são e para que servem? - LadyTalks
PDF
React e Ratchet, async e websockets com PHP, por Gabriel Couto
PDF
PHPExperience 2016 - Pirâmide de Testes
PPTX
Sistemas Distribuídos e PHP - Darkmira Tour BR 2016
PDF
InterCon 2016 - Internet of “Thinking” – IoT sem BS com ESP8266
PDF
InterCon 2016 - Gerenciando deploy e atualização de 450 apps sem enlouquecer
PDF
Autenticação e Autorização - MercadoLivre Developers Conference
PDF
InterCon 2016 - Backend do IoT com RethinkDB e Python
InterCon 2016 - Desenvolvimento para interfaces em vídeo e cases da plataform...
Testes O que são e para que servem? - LadyTalks
React e Ratchet, async e websockets com PHP, por Gabriel Couto
PHPExperience 2016 - Pirâmide de Testes
Sistemas Distribuídos e PHP - Darkmira Tour BR 2016
InterCon 2016 - Internet of “Thinking” – IoT sem BS com ESP8266
InterCon 2016 - Gerenciando deploy e atualização de 450 apps sem enlouquecer
Autenticação e Autorização - MercadoLivre Developers Conference
InterCon 2016 - Backend do IoT com RethinkDB e Python
Ad

More from iMasters (20)

PPTX
O que você precisa saber para modelar bancos de dados NoSQL - Dani Monteiro
PDF
Postgres: wanted, beloved or dreaded? - Fabio Telles
PPTX
Por que minha query esta lenta? - Suellen Moraes
PPTX
Relato das trincheiras: o dia a dia de uma consultoria de banco de dados - Ig...
PDF
ORMs heróis ou vilões dentro da arquitetura de dados? - Otávio gonçalves
PPTX
SQL e NoSQL trabalhando juntos: uma comparação para obter o melhor de ambos -...
PDF
Arquitetando seus dados na prática para a LGPD - Alessandra Martins
PDF
O papel do DBA no mundo de ciência de dados e machine learning - Mauro Pichil...
PDF
Desenvolvimento Mobile Híbrido, Nativo ou Web: Quando usá-los - Juliana Chahoud
PDF
Use MDD e faça as máquinas trabalharem para você - Andreza Leite
PDF
Entendendo os porquês do seu servidor - Talita Bernardes
PDF
Backend performático além do "coloca mais máquina lá" - Diana Arnos
PPTX
Dicas para uma maior performance em APIs REST - Renato Groffe
PPTX
7 dicas de desempenho que equivalem por 21 - Danielle Monteiro
PDF
Quem se importa com acessibilidade Web? - Mauricio Maujor
PDF
Service Mesh com Istio e Kubernetes - Wellington Figueira da Silva
PDF
Erros: Como eles vivem, se alimentam e se reproduzem? - Augusto Pascutti
PDF
Elasticidade e engenharia de banco de dados para alta performance - Rubens G...
PDF
Construindo aplicações mais confiantes - Carolina Karklis
PDF
Monitoramento de Aplicações - Felipe Regalgo
O que você precisa saber para modelar bancos de dados NoSQL - Dani Monteiro
Postgres: wanted, beloved or dreaded? - Fabio Telles
Por que minha query esta lenta? - Suellen Moraes
Relato das trincheiras: o dia a dia de uma consultoria de banco de dados - Ig...
ORMs heróis ou vilões dentro da arquitetura de dados? - Otávio gonçalves
SQL e NoSQL trabalhando juntos: uma comparação para obter o melhor de ambos -...
Arquitetando seus dados na prática para a LGPD - Alessandra Martins
O papel do DBA no mundo de ciência de dados e machine learning - Mauro Pichil...
Desenvolvimento Mobile Híbrido, Nativo ou Web: Quando usá-los - Juliana Chahoud
Use MDD e faça as máquinas trabalharem para você - Andreza Leite
Entendendo os porquês do seu servidor - Talita Bernardes
Backend performático além do "coloca mais máquina lá" - Diana Arnos
Dicas para uma maior performance em APIs REST - Renato Groffe
7 dicas de desempenho que equivalem por 21 - Danielle Monteiro
Quem se importa com acessibilidade Web? - Mauricio Maujor
Service Mesh com Istio e Kubernetes - Wellington Figueira da Silva
Erros: Como eles vivem, se alimentam e se reproduzem? - Augusto Pascutti
Elasticidade e engenharia de banco de dados para alta performance - Rubens G...
Construindo aplicações mais confiantes - Carolina Karklis
Monitoramento de Aplicações - Felipe Regalgo
Ad

Recently uploaded (20)

PDF
Network Security Unit 5.pdf for BCA BBA.
PPTX
A Presentation on Artificial Intelligence
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PDF
A comparative analysis of optical character recognition models for extracting...
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PDF
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PPTX
Programs and apps: productivity, graphics, security and other tools
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
MIND Revenue Release Quarter 2 2025 Press Release
PPTX
sap open course for s4hana steps from ECC to s4
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PDF
Electronic commerce courselecture one. Pdf
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
Assigned Numbers - 2025 - Bluetooth® Document
PDF
Encapsulation theory and applications.pdf
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Network Security Unit 5.pdf for BCA BBA.
A Presentation on Artificial Intelligence
Dropbox Q2 2025 Financial Results & Investor Presentation
A comparative analysis of optical character recognition models for extracting...
20250228 LYD VKU AI Blended-Learning.pptx
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
Mobile App Security Testing_ A Comprehensive Guide.pdf
Chapter 3 Spatial Domain Image Processing.pdf
Programs and apps: productivity, graphics, security and other tools
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
Spectral efficient network and resource selection model in 5G networks
MIND Revenue Release Quarter 2 2025 Press Release
sap open course for s4hana steps from ECC to s4
“AI and Expert System Decision Support & Business Intelligence Systems”
The Rise and Fall of 3GPP – Time for a Sabbatical?
Electronic commerce courselecture one. Pdf
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Assigned Numbers - 2025 - Bluetooth® Document
Encapsulation theory and applications.pdf
Agricultural_Statistics_at_a_Glance_2022_0.pdf

InterCon 2016 - HTTP/2 for Web Application Developers