SlideShare uma empresa Scribd logo
1 de 34
Baixar para ler offline
Core Web
Vitals
Técnicas de Performance
Web para Javascript
Core Web Vitals
““
Métricas de
performance
focadas no
usuário
(Da Google)
-Estabilidade
-Disponibilidade
-Robustez
-Usabilidade
Quando pensamos em
performance, pensamos
também em
Principais métricas
Carregamento , interatividade e estabilidade visual
Imagem extraída do texto Analysing CRP Performance do Ilya Grigorik no web.dev
https://web.dev/critical-rendering-path-analyzing-crp/
Critical Rendering Path
Read bytes
Form chars
Make tokens
Form nodes
Append to
Dom
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link rel="stylesheet" href="index.css">
<title>Sample</title>
O parsing
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link rel="stylesheet" href="index.css">
<title>Sample</title>
Opa
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link rel="stylesheet" href="index.css">
<title>Sample</title>
<script src=“index.js”></script>
Scripts síncronos podem
modi
fi
car O DOM enquanto
o parser funciona
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width,initial-scale=1" />
<link href="style.css" rel="stylesheet"/>
</head>
<body>
<p>Hello <span>web performance</span> students!</p>
<div><img src="awesome-photo.jpg" /></div>
<script src="app.js"></script>
</body>
</html>
Preload Scanner
FOUC (Flash of Unstyled Content)
Os recursos dentro
das marcações
injetadas pelo
javascript são
invisíveis pro
preload scanner
Como saber se meu
Javascript está
sendo um problema?
<script>
</script>
FID
29
First Input Delay
INP
Interaction to Next Paint
15
TBT
79
Total Blocking Time
Observar as métricas relacionadas à
interatividade e recursos que
bloqueiam a main thread
Mede o tempo que a thread principal
fi
cou bloqueada.
Começa a contar à partir do primeiro conteúdo renderizado
e acaba quando não há nenhuma task < 50ms
FID
29
First Input Delay
INP
Interaction to Next Paint
15
TBT
79
Total Blocking Time
Tempo de não-interatividade
Observa a velocidade de resposta de todas as
interações que geram respostas como eventos de
clique, toque e teclado.
Velocidade de resposta de interação
Observa a velocidade da primeira interação
Em Depreciação
<script>
</script>
Se o problema é o
carregamento, vou
colocar meu JS inline
Vish
Recursos inline não geram um request a
mais a ser aguardado, mas aumentam o
tempo que o preload scanner leva pra
encontrar novos recursos
Estratégias
de otimização
<script>
</script>
Resource
priority
Carregamento Padrão
HTML
Parsing do
HTML pausado
Download do
script
Execução do
script
Async e Defer
<script src=“script.js” async />
<script src=“script.js” defer />
<link rel=“preload” href=“script.js” />
script.js High
script.js Low
<script src=“script.js” async></script>
…ele é carregado com prioridade High, fazendo
o navegador dedicar mais banda pra ele do que
necessário
O preload ajuda o script ser carregado com
antecedência, mas ao invés dele ser carregado
com prioridade low como no async…
Preload
Preconnect
conexão download
conexão download
conexão download
conexão download
<link rel=“preconnect” href=“script.js” />
- Páginas
- Assets estáticos (imagens, fontes, etc.)
- Módulos de javascript
- Arquivos prioritários de fontes externas
Alternativamente podemos usar o
rel="dns-prefetch" que apenas
adianta a resolução do nome de
domínio para o IP, sem modi
fi
car a
prioridade de fetch
Prefetch
<link rel=“prefetch” href=“script.js” />
index.html
about.html about.css logo.png
Com rel=“prefetch" podemos
pré carregar assets e
páginas pra usá-las depois
Falando em
Time to
Interactive
Tempo entre o primeiro
conteúdo renderizado e a
execução da ultima Long Task
de javascript (> 50ms)
FCP Quiet
TTI
- Mini
fi
car Javascript
- Preconnect e Preload
- Reduzir código de terceiros
- Reduzir tempo de execução de JS
- Limpar a main thread
- Menos requests de bundles menores
FetchPriority
<script src=“script.js” fetchpriority=“high" />
Como
metrificar?
<script>
</script>
Como medir?
DevTools
- DOMContentLoaded e Load
- Bundle Size e Time
- Priority
- Waterfall
Network
Evento disparado
quando o DOM é
totalmente criado
onload
É disparado quando
toda página e seus
assets são
carregados
domContentLoaded
Como medir?
- Simular mobile e com throttling
- Pra Javascript, TBT e FCP
- Render Snapshot
- Sessão de oportunidades
Lighthouse
DevTools
Como medir?
- Simular com throttling
- Conferir snapshots
- Inspecionar network
- Veri
fi
car FP, DCL e L em
Timings
- Ler os logs no Summery e
Na Call Tree quando necessário
Performance tab
DevTools
Como medir?
- TFB, FCP e TBT
- Visualizar Snapshots
- Inspecionar waterfall
- Ler os Performance Insights
WebPageTest
Obrigado!
Perguntas?
<script>
</script>

Mais conteúdo relacionado

Mais procurados

HTML5 în XXX de minute
HTML5 în XXX de minuteHTML5 în XXX de minute
HTML5 în XXX de minuteSabin Buraga
 
ePub 3, HTML 5 & CSS 3 (+ Fixed-Layout)
ePub 3, HTML 5 & CSS 3 (+ Fixed-Layout)ePub 3, HTML 5 & CSS 3 (+ Fixed-Layout)
ePub 3, HTML 5 & CSS 3 (+ Fixed-Layout)Clément Wehrung
 
Aem dispatcher – tips & tricks
Aem dispatcher – tips & tricksAem dispatcher – tips & tricks
Aem dispatcher – tips & tricksAshokkumar T A
 
CSS3 2D/3D transform
CSS3 2D/3D transformCSS3 2D/3D transform
CSS3 2D/3D transformKenny Lee
 
BEM it! Introduction to BEM methodology
BEM it! Introduction to BEM methodologyBEM it! Introduction to BEM methodology
BEM it! Introduction to BEM methodologyVarya Stepanova
 
AEM Sightly Template Language
AEM Sightly Template LanguageAEM Sightly Template Language
AEM Sightly Template LanguageGabriel Walt
 
3 Layers of the Web - Part 1
3 Layers of the Web - Part 13 Layers of the Web - Part 1
3 Layers of the Web - Part 1Jeremy White
 
1 03 - CSS Introduction
1 03 - CSS Introduction1 03 - CSS Introduction
1 03 - CSS Introductionapnwebdev
 
Intro to front end development Basic
Intro to front end development BasicIntro to front end development Basic
Intro to front end development Basicabdulrahmanabdullah32
 
CSS For Backend Developers
CSS For Backend DevelopersCSS For Backend Developers
CSS For Backend Developers10Clouds
 
Understanding Sling Models in AEM
Understanding Sling Models in AEMUnderstanding Sling Models in AEM
Understanding Sling Models in AEMAccunity Software
 

Mais procurados (20)

HTML5 în XXX de minute
HTML5 în XXX de minuteHTML5 în XXX de minute
HTML5 în XXX de minute
 
Intro to html
Intro to htmlIntro to html
Intro to html
 
ePub 3, HTML 5 & CSS 3 (+ Fixed-Layout)
ePub 3, HTML 5 & CSS 3 (+ Fixed-Layout)ePub 3, HTML 5 & CSS 3 (+ Fixed-Layout)
ePub 3, HTML 5 & CSS 3 (+ Fixed-Layout)
 
Aem dispatcher – tips & tricks
Aem dispatcher – tips & tricksAem dispatcher – tips & tricks
Aem dispatcher – tips & tricks
 
CSS3 2D/3D transform
CSS3 2D/3D transformCSS3 2D/3D transform
CSS3 2D/3D transform
 
Html ppt
Html pptHtml ppt
Html ppt
 
Nuxt.js - Introduction
Nuxt.js - IntroductionNuxt.js - Introduction
Nuxt.js - Introduction
 
BEM it! Introduction to BEM methodology
BEM it! Introduction to BEM methodologyBEM it! Introduction to BEM methodology
BEM it! Introduction to BEM methodology
 
AEM Sightly Template Language
AEM Sightly Template LanguageAEM Sightly Template Language
AEM Sightly Template Language
 
3 Layers of the Web - Part 1
3 Layers of the Web - Part 13 Layers of the Web - Part 1
3 Layers of the Web - Part 1
 
HTML Introduction
HTML IntroductionHTML Introduction
HTML Introduction
 
1 03 - CSS Introduction
1 03 - CSS Introduction1 03 - CSS Introduction
1 03 - CSS Introduction
 
web development
web developmentweb development
web development
 
Intro to front end development Basic
Intro to front end development BasicIntro to front end development Basic
Intro to front end development Basic
 
Oracle on AWS RDS Migration - 성기명
Oracle on AWS RDS Migration - 성기명Oracle on AWS RDS Migration - 성기명
Oracle on AWS RDS Migration - 성기명
 
CSS Basics
CSS BasicsCSS Basics
CSS Basics
 
Bootstrap ppt
Bootstrap pptBootstrap ppt
Bootstrap ppt
 
CSS For Backend Developers
CSS For Backend DevelopersCSS For Backend Developers
CSS For Backend Developers
 
Understanding Sling Models in AEM
Understanding Sling Models in AEMUnderstanding Sling Models in AEM
Understanding Sling Models in AEM
 
HTML X CSS
HTML X CSSHTML X CSS
HTML X CSS
 

Semelhante a Core Web Vitals - Técnicas de Performance Web pra Javascript

Navegadores por de baixo dos panos - Ana Luiza Bastos
Navegadores por de baixo dos panos - Ana Luiza BastosNavegadores por de baixo dos panos - Ana Luiza Bastos
Navegadores por de baixo dos panos - Ana Luiza BastosiMasters
 
Como Perder Peso (no browser)
Como Perder Peso (no browser)Como Perder Peso (no browser)
Como Perder Peso (no browser)Zeno Rocha
 
FrontInVale 2016: Webpack - A evolução do asset pipeline (Lightning Talk)
FrontInVale 2016: Webpack - A evolução do asset pipeline (Lightning Talk)FrontInVale 2016: Webpack - A evolução do asset pipeline (Lightning Talk)
FrontInVale 2016: Webpack - A evolução do asset pipeline (Lightning Talk)Aryel Tupinambá
 
Otimização front end
Otimização front endOtimização front end
Otimização front endErika Takahara
 
Performance - Acelere seu site! Na web tempo é mais que dinheiro.
Performance - Acelere seu site! Na web tempo é mais que dinheiro.Performance - Acelere seu site! Na web tempo é mais que dinheiro.
Performance - Acelere seu site! Na web tempo é mais que dinheiro.Gustavo Corrêa Alves
 
JS Experience 2017 - Otimizando o front end
JS Experience 2017 - Otimizando o front endJS Experience 2017 - Otimizando o front end
JS Experience 2017 - Otimizando o front endiMasters
 
Backbone.js nas trincheiras
Backbone.js nas trincheirasBackbone.js nas trincheiras
Backbone.js nas trincheirasLambda 3
 
Drupal Performance - Dicas e técnicas para levar seu Drupal às nuvens
Drupal Performance - Dicas e técnicas para levar seu Drupal às nuvensDrupal Performance - Dicas e técnicas para levar seu Drupal às nuvens
Drupal Performance - Dicas e técnicas para levar seu Drupal às nuvensPaulino Michelazzo
 
Integração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControlIntegração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControlManuel Lemos
 
Integracao Contínua com CruiseControl e phpUnderControl
Integracao Contínua com CruiseControl e phpUnderControlIntegracao Contínua com CruiseControl e phpUnderControl
Integracao Contínua com CruiseControl e phpUnderControlDiego Tremper
 
TechDay - Sistemas WEB em Java - Rogério N. Jr.
TechDay - Sistemas WEB em Java - Rogério N. Jr.TechDay - Sistemas WEB em Java - Rogério N. Jr.
TechDay - Sistemas WEB em Java - Rogério N. Jr.Rogério Napoleão Jr.
 
LambdaDay: Backbone.js
LambdaDay: Backbone.jsLambdaDay: Backbone.js
LambdaDay: Backbone.jsGiovanni Bassi
 
Integração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControlIntegração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControlDiego Tremper
 
IoTizando com JavaScript
IoTizando com JavaScriptIoTizando com JavaScript
IoTizando com JavaScriptHeider Lopes
 
AngularJS com NODE.JS e Socket.IO
AngularJS com NODE.JS e Socket.IOAngularJS com NODE.JS e Socket.IO
AngularJS com NODE.JS e Socket.IODouglas Lira
 

Semelhante a Core Web Vitals - Técnicas de Performance Web pra Javascript (20)

Navegadores por de baixo dos panos - Ana Luiza Bastos
Navegadores por de baixo dos panos - Ana Luiza BastosNavegadores por de baixo dos panos - Ana Luiza Bastos
Navegadores por de baixo dos panos - Ana Luiza Bastos
 
Como Perder Peso (no browser)
Como Perder Peso (no browser)Como Perder Peso (no browser)
Como Perder Peso (no browser)
 
Web Performance Client Side
Web Performance Client SideWeb Performance Client Side
Web Performance Client Side
 
FrontInVale 2016: Webpack - A evolução do asset pipeline (Lightning Talk)
FrontInVale 2016: Webpack - A evolução do asset pipeline (Lightning Talk)FrontInVale 2016: Webpack - A evolução do asset pipeline (Lightning Talk)
FrontInVale 2016: Webpack - A evolução do asset pipeline (Lightning Talk)
 
Otimização front end
Otimização front endOtimização front end
Otimização front end
 
Performance - Acelere seu site! Na web tempo é mais que dinheiro.
Performance - Acelere seu site! Na web tempo é mais que dinheiro.Performance - Acelere seu site! Na web tempo é mais que dinheiro.
Performance - Acelere seu site! Na web tempo é mais que dinheiro.
 
JS Experience 2017 - Otimizando o front end
JS Experience 2017 - Otimizando o front endJS Experience 2017 - Otimizando o front end
JS Experience 2017 - Otimizando o front end
 
Aula 4 – Linguagem HTML - Imagens e links
Aula 4 – Linguagem HTML - Imagens e linksAula 4 – Linguagem HTML - Imagens e links
Aula 4 – Linguagem HTML - Imagens e links
 
Backbone.js nas trincheiras
Backbone.js nas trincheirasBackbone.js nas trincheiras
Backbone.js nas trincheiras
 
Drupal Performance - Dicas e técnicas para levar seu Drupal às nuvens
Drupal Performance - Dicas e técnicas para levar seu Drupal às nuvensDrupal Performance - Dicas e técnicas para levar seu Drupal às nuvens
Drupal Performance - Dicas e técnicas para levar seu Drupal às nuvens
 
Integração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControlIntegração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControl
 
Integracao Contínua com CruiseControl e phpUnderControl
Integracao Contínua com CruiseControl e phpUnderControlIntegracao Contínua com CruiseControl e phpUnderControl
Integracao Contínua com CruiseControl e phpUnderControl
 
Java e Cloud Computing
Java e Cloud ComputingJava e Cloud Computing
Java e Cloud Computing
 
TechDay - Sistemas WEB em Java - Rogério N. Jr.
TechDay - Sistemas WEB em Java - Rogério N. Jr.TechDay - Sistemas WEB em Java - Rogério N. Jr.
TechDay - Sistemas WEB em Java - Rogério N. Jr.
 
Html5 workshop
Html5 workshopHtml5 workshop
Html5 workshop
 
LambdaDay: Backbone.js
LambdaDay: Backbone.jsLambdaDay: Backbone.js
LambdaDay: Backbone.js
 
React js
React js React js
React js
 
Integração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControlIntegração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControl
 
IoTizando com JavaScript
IoTizando com JavaScriptIoTizando com JavaScript
IoTizando com JavaScript
 
AngularJS com NODE.JS e Socket.IO
AngularJS com NODE.JS e Socket.IOAngularJS com NODE.JS e Socket.IO
AngularJS com NODE.JS e Socket.IO
 

Core Web Vitals - Técnicas de Performance Web pra Javascript