SlideShare une entreprise Scribd logo
1  sur  34
Télécharger pour lire hors ligne
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>

Contenu connexe

Tendances

Oracle Cloud Infrastructure:2021年4月度サービス・アップデート
Oracle Cloud Infrastructure:2021年4月度サービス・アップデートOracle Cloud Infrastructure:2021年4月度サービス・アップデート
Oracle Cloud Infrastructure:2021年4月度サービス・アップデートオラクルエンジニア通信
 
Karate - Web-Service API Testing Made Simple
Karate - Web-Service API Testing Made SimpleKarate - Web-Service API Testing Made Simple
Karate - Web-Service API Testing Made SimpleVodqaBLR
 
WebSphere DataPower B2B Appliance overview
WebSphere DataPower B2B Appliance overviewWebSphere DataPower B2B Appliance overview
WebSphere DataPower B2B Appliance overviewSarah Duffy
 
Android Layout
Android LayoutAndroid Layout
Android Layoutmcanotes
 
[오픈소스컨설팅]Zabbix Installation and Configuration Guide
[오픈소스컨설팅]Zabbix Installation and Configuration Guide[오픈소스컨설팅]Zabbix Installation and Configuration Guide
[오픈소스컨설팅]Zabbix Installation and Configuration GuideJi-Woong Choi
 
20120612 02 - Automatisation des tests avec squash TA en environnement bancai...
20120612 02 - Automatisation des tests avec squash TA en environnement bancai...20120612 02 - Automatisation des tests avec squash TA en environnement bancai...
20120612 02 - Automatisation des tests avec squash TA en environnement bancai...LeClubQualiteLogicielle
 
Testes E2E em Cypress com JS
Testes E2E em Cypress com JSTestes E2E em Cypress com JS
Testes E2E em Cypress com JSNàtali Cabral
 
SPIFFE Meetup Tokyo #2 - Attestation Internals in SPIRE - Shingo Omura
SPIFFE Meetup Tokyo #2 - Attestation Internals in SPIRE - Shingo OmuraSPIFFE Meetup Tokyo #2 - Attestation Internals in SPIRE - Shingo Omura
SPIFFE Meetup Tokyo #2 - Attestation Internals in SPIRE - Shingo OmuraPreferred Networks
 
Introduction to the rockwell automation library of process objects
Introduction to the rockwell automation library of process objectsIntroduction to the rockwell automation library of process objects
Introduction to the rockwell automation library of process objectsIntelligentManufacturingInstitute
 
CCNA Exploration 1 - Chapter 1
CCNA Exploration 1 - Chapter 1CCNA Exploration 1 - Chapter 1
CCNA Exploration 1 - Chapter 1Irsandi Hasan
 
Windows と標準的なハードウェアで構築するストレージ サーバー
Windows と標準的なハードウェアで構築するストレージ サーバーWindows と標準的なハードウェアで構築するストレージ サーバー
Windows と標準的なハードウェアで構築するストレージ サーバーMasahiko Sada
 
API Test Automation Using Karate (Anil Kumar Moka)
API Test Automation Using Karate (Anil Kumar Moka)API Test Automation Using Karate (Anil Kumar Moka)
API Test Automation Using Karate (Anil Kumar Moka)Peter Thomas
 
CCNAv5 - S3: Chapter3 Link Aggregation
CCNAv5 - S3: Chapter3 Link AggregationCCNAv5 - S3: Chapter3 Link Aggregation
CCNAv5 - S3: Chapter3 Link AggregationVuz Dở Hơi
 

Tendances (19)

Oracle Cloud Infrastructure:2021年4月度サービス・アップデート
Oracle Cloud Infrastructure:2021年4月度サービス・アップデートOracle Cloud Infrastructure:2021年4月度サービス・アップデート
Oracle Cloud Infrastructure:2021年4月度サービス・アップデート
 
Karate - Web-Service API Testing Made Simple
Karate - Web-Service API Testing Made SimpleKarate - Web-Service API Testing Made Simple
Karate - Web-Service API Testing Made Simple
 
Sqlite
SqliteSqlite
Sqlite
 
WebSphere DataPower B2B Appliance overview
WebSphere DataPower B2B Appliance overviewWebSphere DataPower B2B Appliance overview
WebSphere DataPower B2B Appliance overview
 
Android Layout
Android LayoutAndroid Layout
Android Layout
 
[오픈소스컨설팅]Zabbix Installation and Configuration Guide
[오픈소스컨설팅]Zabbix Installation and Configuration Guide[오픈소스컨설팅]Zabbix Installation and Configuration Guide
[오픈소스컨설팅]Zabbix Installation and Configuration Guide
 
20120612 02 - Automatisation des tests avec squash TA en environnement bancai...
20120612 02 - Automatisation des tests avec squash TA en environnement bancai...20120612 02 - Automatisation des tests avec squash TA en environnement bancai...
20120612 02 - Automatisation des tests avec squash TA en environnement bancai...
 
Testes E2E em Cypress com JS
Testes E2E em Cypress com JSTestes E2E em Cypress com JS
Testes E2E em Cypress com JS
 
SPIFFE Meetup Tokyo #2 - Attestation Internals in SPIRE - Shingo Omura
SPIFFE Meetup Tokyo #2 - Attestation Internals in SPIRE - Shingo OmuraSPIFFE Meetup Tokyo #2 - Attestation Internals in SPIRE - Shingo Omura
SPIFFE Meetup Tokyo #2 - Attestation Internals in SPIRE - Shingo Omura
 
Apache maven 2 overview
Apache maven 2 overviewApache maven 2 overview
Apache maven 2 overview
 
Introduction to the rockwell automation library of process objects
Introduction to the rockwell automation library of process objectsIntroduction to the rockwell automation library of process objects
Introduction to the rockwell automation library of process objects
 
CCNA Exploration 1 - Chapter 1
CCNA Exploration 1 - Chapter 1CCNA Exploration 1 - Chapter 1
CCNA Exploration 1 - Chapter 1
 
Windows と標準的なハードウェアで構築するストレージ サーバー
Windows と標準的なハードウェアで構築するストレージ サーバーWindows と標準的なハードウェアで構築するストレージ サーバー
Windows と標準的なハードウェアで構築するストレージ サーバー
 
Soap UI and postman
Soap UI and postmanSoap UI and postman
Soap UI and postman
 
Selenium at Salesforce Scale
Selenium at Salesforce ScaleSelenium at Salesforce Scale
Selenium at Salesforce Scale
 
Severity and Priority
Severity and PrioritySeverity and Priority
Severity and Priority
 
API Test Automation Using Karate (Anil Kumar Moka)
API Test Automation Using Karate (Anil Kumar Moka)API Test Automation Using Karate (Anil Kumar Moka)
API Test Automation Using Karate (Anil Kumar Moka)
 
MVVM-C vs MVP
MVVM-C vs MVPMVVM-C vs MVP
MVVM-C vs MVP
 
CCNAv5 - S3: Chapter3 Link Aggregation
CCNAv5 - S3: Chapter3 Link AggregationCCNAv5 - S3: Chapter3 Link Aggregation
CCNAv5 - S3: Chapter3 Link Aggregation
 

Similaire à 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
 

Similaire à 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