Thales Carvalho, Course Manager da Udacity fala sobre Otimizando o front end no JS Experience'17
Saiba mais em https://eventos.imasters.com.br/jsexperience
2. Antes de começar
Pré-requisitos:
Disposição pra me ouvir falar (falo muito)
HTML, CSS, JavaScript
Saber o que é DOM
HTTP requests (vai-e-volta, GET)
Entender um pouco de
estruturas de dados (árvores e afins)
Um pouquinho de compiladores
4. Conteúdo
Workshop baseado nos seguintes cursos da Udacity:
Otimização de Performance de Website
Otimização de Renderização no Browser
Alguém já fez esses cursos da Udacity?
5. Conteúdo
O que é o CRP e como isso funciona
Otimizações simples para economizar requisições e
evitar bloqueio do CRP
Ciclo de vida de aplicativos (RAIL)
Garantindo o bom e velho 60FPS
Otimizações em Animações, Estilos, Layout
Web Workers
6. “Para desenvolver um ótimo site, é necessário
entender os usuários e o que eles querem alcançar,
mas também como o browser funciona para
criarmos uma experiência rápida e positiva.”
Ilya Grigorik - Google Developer Advocate & Web Performance Engineer
7. Primeiro, meça. Depois, se necessário, otimize.
Ilya Grigorik - Google Developer Advocate & Web Performance Engineer
10. Conversão de HTML para DOM
Caracteres
Tokens
Nodes
DOM
<html><head><meta name=”viewport”
content=”width=device-width”><link href=”style.css” ...
11. Conversão de HTML para DOM
Caracteres
Tokens
Nodes
DOM
<html><head><meta name=”viewport”
content=”width=device-width”><link href=”style.css” ...
StartTag: html StartTag: head Tag: meta EndTag: head
12. Conversão de HTML para DOM
Caracteres
Tokens
Nodes
DOM
<html><head><meta name=”viewport”
content=”width=device-width”><link href=”style.css” ...
StartTag: html StartTag: head Tag: meta EndTag: head
13. Conversão de HTML para DOM
Caracteres
Tokens
Nodes
DOM
<html><head><meta name=”viewport”
content=”width=device-width”><link href=”style.css” ...
StartTag: html StartTag: head Tag: meta EndTag: head
29. Até agora, quais otimizações posso realizar?
Minificar HTML & CSS & JavaScript
Automatizando, claro! Use task runners: gulp, grunt, etc
Tornar CSS crítico inline(link)
Compactar (link)
HTTP Caching (link)
30. Quanto antes o browser receber o HTML e construir o DOM?
Quanto antes o browser receber o CSS e construir o CSSOM?
Quiz: Quando o browser irá renderizar a página?
31. Quanto antes o browser receber o HTML e construir o DOM?
Quanto antes o browser receber o CSS e construir o CSSOM?
Quiz: Quando o browser irá renderizar a página?
45. Até agora, quais otimizações posso realizar?
Minificar, Compactar, Cache
HTML, CSS, JavaScript
Minimizar uso de recursos que bloqueiam a renderização
1. Uso de media queries em <link> para desbloquear renderização
2. Inline CSS
Minimizar uso de recursos que bloqueiam o parser
1. Postergar execução de JavaScript com defer
2. Usar atributo async no <script>
47. Quiz: Calcular a métrica de CRP com CSS externo
Analise o caminho de renderização crítica
Número de recursos críticos
KB críticos totais
Comprimento de caminhos críticos mínimos (GET->response)
48. Analise o caminho de renderização crítica
2
9
2
Número de recursos críticos
KB críticos totais
Comprimento de caminhos críticos mínimos (GET->response)
Quiz: Calcular a métrica de CRP com CSS externo
50. Quiz: Calcular a métrica de CRP com CSS e JS externo
Analise o caminho de renderização crítica
Número de recursos críticos
KB críticos totais
Comprimento de caminhos críticos mínimos (GET->response)
51. Quiz: Calcular a métrica de CRP com CSS e JS externo
Analise o caminho de renderização crítica
Número de recursos críticos
KB críticos totais
Comprimento de caminhos críticos mínimos (GET->response)
3
11
2
81. Quiz: Na fase Idle, quais tarefas podemos executar?
1. Carregar imagens do conteúdo principal
2. Pós-carregamento de animações
3. Iniciar requisições assíncronas de conteúdos não
mostrados na tela
4. Carregar imagens de conteúdos não mostrados logo que
carrega a página
82. Quiz: Na fase Idle, quais tarefas podemos executar?
1. Carregar imagens do conteúdo principal
2. Pós-carregamento de animações
3. Iniciar requisições assíncronas de conteúdos não
mostrados na tela
4. Carregar imagens de conteúdos não mostrados logo que
carrega a página
85. Análise de performance - DESAFIO 1
Dicas:
● Feche todos os apps
● Entre em Incognito
● Foque nas causas dos gargalos, não em
sintomas
● Meça primeiro, depois otimize
86. Análise de performance - DESAFIO 1
Qual função é a causadora de gargalos?
1. Inicie a gravação da timeline
2. Clique em “Switch Layout”
https://goo.gl/kq3iwA
87. Análise de performance - DESAFIO 1
Qual função é a causadora de gargalos?
1. Inicie a gravação da timeline
2. Clique em “Switch Layout”
Resp: onSwitchLayoutClick
88. Qual função é a causadora de gargalos?
1. Inicie a gravação da timeline
2. Clique em “Switch Layout”
https://goo.gl/cjmH9j
Análise de performance - DESAFIO 2
89. Análise de performance - DESAFIO 2
Qual função é a causadora de gargalos?
1. Inicie a gravação da timeline
2. Clique em “Switch Layout”
Resp: totesLayingOutYo
93. Otimizando o JavaScript
Seu código JavaScript é compilado com
múltiplas otimizações por meio do compilador
JIT (Just In Time)
94. Otimizando o JavaScript para Animações
Você tem 10ms para gerar cada frame. Como
você se certifica que o JS está atrapalhando o
menos possível?
1. Otimiza o JS em nanossegundos
2. Executa o JS a cada 16ms agendado
3. Adia a execução do JS sempre para o finalmente do frame
4. Executa o JS o mais cedo possível em cada frame
95. Otimizando o JavaScript para Animações
Você tem 10ms para gerar cada frame. Como
você se certifica que o JS está atrapalhando o
menos possível?
1. Otimiza o JS em nanossegundos
2. Executa o JS a cada 16ms agendado
3. Adia a execução do JS sempre para o finalmente do frame
4. Executa o JS o mais cedo possível em cada frame
108. Otimizando o Layout e Estilos
Obs: com JavaScript
Problema mais comum de
desempenho do Layout:
Layout Forçado Síncrono (FSL)
Tony Gentilcore: Como (não) disparar um layout no Webkit
112. Em parceria com especialistas
do React Training
Dominam o mercado de treinamento
do ecossistema React.
Inscrições até 27 de junho!
Por enquanto apenas em inglês
115. Revisor de Projetos
Udacity
Trabalho remoto e flexível
Recebe em dólar. Dindin do bom.
Oportunidade de aprendizado
Aguenta? thales.carvalho@udacity.com
116. Revisor de Projetos
Udacity
Trabalho remoto e flexível
Recebe em dólar. Dindin do bom.
Oportunidade de aprendizado
Conhece alguém? thales.carvalho@udacity.com