O documento discute métricas e técnicas de performance web focadas no usuário como estabilidade, disponibilidade e robustez. Ele explica o Critical Rendering Path, estratégias para melhorar a performance como preload, preconnect e reduzir javascript, e formas de medir a performance usando o DevTools e o Lighthouse.
7. 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
8. 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
10. <!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
13. Os recursos dentro
das marcações
injetadas pelo
javascript são
invisíveis pro
preload scanner
14. Como saber se meu
Javascript está
sendo um problema?
<script>
</script>
15. 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
16. 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
21. 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 />
22. <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
23. 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
26. 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
30. Evento disparado
quando o DOM é
totalmente criado
onload
É disparado quando
toda página e seus
assets são
carregados
domContentLoaded
31. Como medir?
- Simular mobile e com throttling
- Pra Javascript, TBT e FCP
- Render Snapshot
- Sessão de oportunidades
Lighthouse
DevTools
32. 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
33. Como medir?
- TFB, FCP e TBT
- Visualizar Snapshots
- Inspecionar waterfall
- Ler os Performance Insights
WebPageTest