SlideShare a Scribd company logo
1 of 58
Download to read offline
PERFORMANCE NA WEB
O MODELO RAIL
E OUTRAS NOVIDADES
@sergio_caelum
sergiolopes.org
OTIMIZAÇÕES WEB
MINIFICAR CSS/JS
COMPRIMIR HTML
GZIP
CONCATENAR CSS/JS
SPRITES
CACHE / EXPIRES
OTIMIZAR IMAGENS
JS NO FIM DA PÁGINA
CSS NO TOPO
ASSÍNCRONO
LAZY-LOAD
CDN
DIMINUIR COOKIES
PARALELIZAR REQs
PERFORMANCE?
ONLOAD
VÁRIAS PERFORMANCES
CARREGAMENTO
INTERAÇÃO
ANIMAÇÃO
MEMÓRIA
BATERIA
LIMITES DA PERCEPÇÃO DE PERFORMANCE
100ms 1s 10s
instantâneo mesma
tarefa
perde
atenção
RAIL
Response
Animation
Idle
Load
LOAD 1s
CRITICAL RENDERING PATH
~600px
~9000px
ABOVE THE FOLD
(ATF)
< 14 KB (1 RTT)
inline do CSS ATF
inline do JS ATF
flush ATF
resto do CSS e JS tudo async
< 14 KB (1 RTT)
inline do CSS ATF
inline do JS ATF
flush ATF
resto do CSS e JS tudo async
server push
http/2
ANIMATION 60FPS
ANIMATION 16ms
elem1.style.top = elemX.offsetTop + 10 + 'px';
elem2.style.top = elemY.offsetTop + 10 + 'px';
elem3.style.top = elemZ.offsetTop + 10 + 'px';
elem4.style.top = elemW.offsetTop + 10 + 'px';
// reads
var topX = elemX.offsetTop;
var topY = elemY.offsetTop;
var topZ = elemZ.offsetTop;
var topW = elemW.offsetTop;
// writes
elem1.style.top = topX + 10 + 'px';
elem2.style.top = topY + 10 + 'px';
elem3.style.top = topZ + 10 + 'px';
elem4.style.top = topW + 10 + 'px';
.header-barraBusca {
height: 100px;
position: absolute;
top: -100px;
}
botaoBusca.onclick = function() {
container.classList.toggle('buscaVisivel');
};
.container {
position: relative;
}
.container.buscaVisivel {
top: 100px;
}
.container {
position: relative;
top: 0;
transition: top 500ms;
}
.container.buscaVisivel {
top: 100px;
}
.container {
transition: transform 500ms;
}
.container.buscaVisivel {
transform: translateY(100px);
}
.container {
transition: transform 500ms;
will-change: transform;
}
.container.buscaVisivel {
transform: translateY(100px);
}
.container {
transition: transform 500ms;
transform: translateZ(0);
}
.container.buscaVisivel {
transform: translateY(100px);
}
agrupar read / write DOM (fastdom)
animação com CSS
animação GPU (transform / opacity)
RESPONSE 100ms
registre o input em <100ms
o máximo em background
indique progresso se >500ms
RESPONSE +
ANIMATION
IDLE 50ms
quebre a tarefa
setTimeout / setImmediate / requestAnimationFrame / requestIdleCallback
coisas pesadas em background
Web Workers
// carrega videos assincronamente
var containers = document.querySelectorAll('.elasticMedia-container[data-src]'
for (var i = 0; i < containers.length; i++) {
var src = containers[i].getAttribute('data-src');
containers[i].innerHTML = '<iframe class="elasticMedia" src="' + src + '" f
}
setTimeout(function(){
// carrega videos assincronamente
var containers = document.querySelectorAll('.elasticMedia-container[data-src]'
for (var i = 0; i < containers.length; i++) {
var src = containers[i].getAttribute('data-src');
containers[i].innerHTML = '<iframe class="elasticMedia" src="' + src + '" f
}
}, 500);
requestIdleCallback(function(){
// carrega videos assincronamente
var containers = document.querySelectorAll('.elasticMedia-container[data-src]'
for (var i = 0; i < containers.length; i++) {
var src = containers[i].getAttribute('data-src');
containers[i].innerHTML = '<iframe class="elasticMedia" src="' + src + '" f
}
});
PERFORMANCE é UX
IDLE 50ms
ANIMATION 16ms
LOAD 1s
RESPONSE 100ms
RAIL
OBRIGADO!
sergiolopes.org
@sergio_caelum

More Related Content

More from Caelum

Desafios de Performance Web - BrazilJS
Desafios de Performance Web - BrazilJSDesafios de Performance Web - BrazilJS
Desafios de Performance Web - BrazilJSCaelum
 
Progressive Web Apps: o melhor da Web appficada
Progressive Web Apps: o melhor da Web appficadaProgressive Web Apps: o melhor da Web appficada
Progressive Web Apps: o melhor da Web appficadaCaelum
 
Tudo que você precisa saber sobre picture e srcset
Tudo que você precisa saber sobre picture e srcsetTudo que você precisa saber sobre picture e srcset
Tudo que você precisa saber sobre picture e srcsetCaelum
 
Como o HTTP/2 vai mudar sua vida
Como o HTTP/2 vai mudar sua vidaComo o HTTP/2 vai mudar sua vida
Como o HTTP/2 vai mudar sua vidaCaelum
 
Métricas e a automatização do controle de qualidade
Métricas e a automatização do controle de qualidadeMétricas e a automatização do controle de qualidade
Métricas e a automatização do controle de qualidadeCaelum
 
HTTP/2, SPDY e Otimizações Web - Front In Maceió 2014 - Sérgio Lopes
HTTP/2, SPDY e Otimizações Web - Front In Maceió 2014 - Sérgio LopesHTTP/2, SPDY e Otimizações Web - Front In Maceió 2014 - Sérgio Lopes
HTTP/2, SPDY e Otimizações Web - Front In Maceió 2014 - Sérgio LopesCaelum
 
Offline Web com Service Workers - Sérgio Lopes
Offline Web com Service Workers - Sérgio LopesOffline Web com Service Workers - Sérgio Lopes
Offline Web com Service Workers - Sérgio LopesCaelum
 
Design Responsivo - MobCamp 2014
Design Responsivo - MobCamp 2014Design Responsivo - MobCamp 2014
Design Responsivo - MobCamp 2014Caelum
 
Além do responsive design: a mudança de paradigma do design adaptativo e os m...
Além do responsive design: a mudança de paradigma do design adaptativo e os m...Além do responsive design: a mudança de paradigma do design adaptativo e os m...
Além do responsive design: a mudança de paradigma do design adaptativo e os m...Caelum
 
Por trás dos frameworks e além do reflection
Por trás dos frameworks e além do reflectionPor trás dos frameworks e além do reflection
Por trás dos frameworks e além do reflectionCaelum
 
Introducao a inteligencia artificial na educacao
Introducao a inteligencia artificial na educacaoIntroducao a inteligencia artificial na educacao
Introducao a inteligencia artificial na educacaoCaelum
 
Wsrest 2013
Wsrest 2013Wsrest 2013
Wsrest 2013Caelum
 
Design Responsivo por uma Web única
Design Responsivo por uma Web únicaDesign Responsivo por uma Web única
Design Responsivo por uma Web únicaCaelum
 
Porque você deveria usar CDI nos seus projetos Java! - JavaOne LA 2012 - Sérg...
Porque você deveria usar CDI nos seus projetos Java! - JavaOne LA 2012 - Sérg...Porque você deveria usar CDI nos seus projetos Java! - JavaOne LA 2012 - Sérg...
Porque você deveria usar CDI nos seus projetos Java! - JavaOne LA 2012 - Sérg...Caelum
 
[FrontInBH 2012] Por uma web mais rápida: técnicas de otimizações de sites - ...
[FrontInBH 2012] Por uma web mais rápida: técnicas de otimizações de sites - ...[FrontInBH 2012] Por uma web mais rápida: técnicas de otimizações de sites - ...
[FrontInBH 2012] Por uma web mais rápida: técnicas de otimizações de sites - ...Caelum
 
Plataforma java: detalhes da JVM
Plataforma java: detalhes da JVMPlataforma java: detalhes da JVM
Plataforma java: detalhes da JVMCaelum
 
CDI e as ideias pro futuro do VRaptor
CDI e as ideias pro futuro do VRaptorCDI e as ideias pro futuro do VRaptor
CDI e as ideias pro futuro do VRaptorCaelum
 
Qualidade de código - a qualidade que faz a diferença
Qualidade de código - a qualidade que faz a diferençaQualidade de código - a qualidade que faz a diferença
Qualidade de código - a qualidade que faz a diferençaCaelum
 
Design de código: qualidade que faz a diferença, qcon 2011
Design de código: qualidade que faz a diferença, qcon 2011Design de código: qualidade que faz a diferença, qcon 2011
Design de código: qualidade que faz a diferença, qcon 2011Caelum
 
[QCon 2011] Por uma web mais rápida: técnicas de otimização de Sites
[QCon 2011] Por uma web mais rápida: técnicas de otimização de Sites[QCon 2011] Por uma web mais rápida: técnicas de otimização de Sites
[QCon 2011] Por uma web mais rápida: técnicas de otimização de SitesCaelum
 

More from Caelum (20)

Desafios de Performance Web - BrazilJS
Desafios de Performance Web - BrazilJSDesafios de Performance Web - BrazilJS
Desafios de Performance Web - BrazilJS
 
Progressive Web Apps: o melhor da Web appficada
Progressive Web Apps: o melhor da Web appficadaProgressive Web Apps: o melhor da Web appficada
Progressive Web Apps: o melhor da Web appficada
 
Tudo que você precisa saber sobre picture e srcset
Tudo que você precisa saber sobre picture e srcsetTudo que você precisa saber sobre picture e srcset
Tudo que você precisa saber sobre picture e srcset
 
Como o HTTP/2 vai mudar sua vida
Como o HTTP/2 vai mudar sua vidaComo o HTTP/2 vai mudar sua vida
Como o HTTP/2 vai mudar sua vida
 
Métricas e a automatização do controle de qualidade
Métricas e a automatização do controle de qualidadeMétricas e a automatização do controle de qualidade
Métricas e a automatização do controle de qualidade
 
HTTP/2, SPDY e Otimizações Web - Front In Maceió 2014 - Sérgio Lopes
HTTP/2, SPDY e Otimizações Web - Front In Maceió 2014 - Sérgio LopesHTTP/2, SPDY e Otimizações Web - Front In Maceió 2014 - Sérgio Lopes
HTTP/2, SPDY e Otimizações Web - Front In Maceió 2014 - Sérgio Lopes
 
Offline Web com Service Workers - Sérgio Lopes
Offline Web com Service Workers - Sérgio LopesOffline Web com Service Workers - Sérgio Lopes
Offline Web com Service Workers - Sérgio Lopes
 
Design Responsivo - MobCamp 2014
Design Responsivo - MobCamp 2014Design Responsivo - MobCamp 2014
Design Responsivo - MobCamp 2014
 
Além do responsive design: a mudança de paradigma do design adaptativo e os m...
Além do responsive design: a mudança de paradigma do design adaptativo e os m...Além do responsive design: a mudança de paradigma do design adaptativo e os m...
Além do responsive design: a mudança de paradigma do design adaptativo e os m...
 
Por trás dos frameworks e além do reflection
Por trás dos frameworks e além do reflectionPor trás dos frameworks e além do reflection
Por trás dos frameworks e além do reflection
 
Introducao a inteligencia artificial na educacao
Introducao a inteligencia artificial na educacaoIntroducao a inteligencia artificial na educacao
Introducao a inteligencia artificial na educacao
 
Wsrest 2013
Wsrest 2013Wsrest 2013
Wsrest 2013
 
Design Responsivo por uma Web única
Design Responsivo por uma Web únicaDesign Responsivo por uma Web única
Design Responsivo por uma Web única
 
Porque você deveria usar CDI nos seus projetos Java! - JavaOne LA 2012 - Sérg...
Porque você deveria usar CDI nos seus projetos Java! - JavaOne LA 2012 - Sérg...Porque você deveria usar CDI nos seus projetos Java! - JavaOne LA 2012 - Sérg...
Porque você deveria usar CDI nos seus projetos Java! - JavaOne LA 2012 - Sérg...
 
[FrontInBH 2012] Por uma web mais rápida: técnicas de otimizações de sites - ...
[FrontInBH 2012] Por uma web mais rápida: técnicas de otimizações de sites - ...[FrontInBH 2012] Por uma web mais rápida: técnicas de otimizações de sites - ...
[FrontInBH 2012] Por uma web mais rápida: técnicas de otimizações de sites - ...
 
Plataforma java: detalhes da JVM
Plataforma java: detalhes da JVMPlataforma java: detalhes da JVM
Plataforma java: detalhes da JVM
 
CDI e as ideias pro futuro do VRaptor
CDI e as ideias pro futuro do VRaptorCDI e as ideias pro futuro do VRaptor
CDI e as ideias pro futuro do VRaptor
 
Qualidade de código - a qualidade que faz a diferença
Qualidade de código - a qualidade que faz a diferençaQualidade de código - a qualidade que faz a diferença
Qualidade de código - a qualidade que faz a diferença
 
Design de código: qualidade que faz a diferença, qcon 2011
Design de código: qualidade que faz a diferença, qcon 2011Design de código: qualidade que faz a diferença, qcon 2011
Design de código: qualidade que faz a diferença, qcon 2011
 
[QCon 2011] Por uma web mais rápida: técnicas de otimização de Sites
[QCon 2011] Por uma web mais rápida: técnicas de otimização de Sites[QCon 2011] Por uma web mais rápida: técnicas de otimização de Sites
[QCon 2011] Por uma web mais rápida: técnicas de otimização de Sites
 

Performance na web: o modelo RAIL e outras novidades