SlideShare uma empresa Scribd logo
1 de 53
Browsers: Como vivem?
O que fazem?
Quem sou eu?
• Vinicius Cavalcante (@vinicaval)
• Dev@Lambda3
• Ama Js <3
• Jogador de Fifa e Rocket League
• Pai de 3 gatos
Agenda
• O que é um browser?
• Como funciona?
• Rede
• Html
• Css
• Js
• Por que eu deveria saber isso?
• Dúvidas?
Criador
Sir Tim Berners Lee
• Inventou internet
A internet era assim
1994/1995
1994/1995
1994/1995
O que é um browser?
O que é um browser?
O que é um browser?
• Interpretador de HTML
• Interpretador de CSS
• Interpretador/compilador de JS
• Leitor de PDF
• E muito mais
Como funciona?
Como funciona?
Como funciona?
• HTTP Request
Como funciona?
• HTTP Response
Como funciona?
• Http Status Code
• 1xx – Informações
• 2xx – Sucesso
• 3xx – Redirects
• 4xx – Erros no client
• 5xx – Erros no server
Como funciona?
• A engine de renderização recebe os arquivos da camada de rede de
8kb em 8kb
Como funciona?
HTML DOM
Como funciona?
CSSOM
Como funciona?
• webkit
Como funciona?
• Gecko
Como funciona?
Como funciona?
Como funciona?
Como funciona?
Regras que afetam o layout
Como funciona?
Regras que afetam o paint
Como funciona?
Ordem de prioridade de CSS:
1 – Browser
2 – Página
3 – Página inline/important
Como funciona?
Especificidade de estilos CSS:
A base é 0 0 0 0, quanto mais à esquerda, mais específico.
0 0 0 0
Important/style ID Classes/pseudoclasses elementos
Como funciona?
Exemplos:
div.content
div.content a:hover
0 0 1 1
Important/style ID Classes/pseudoclasses elementos
0 0 2 2
Important/style ID Classes/pseudoclasses elementos
Como funciona?
• Main Thread
• Roda Js
• Cálculos gerais de HTML/CSS
• Cria o layout da página
• Pinta os elementos
• Carrega os elementos para a compositor thread
Como funciona?
• Compositor Thread
• Desenha elementos na tela utilizando a GPU
• Pede pra main thread atualizar elementos visíveis ou quase visíveis de partes
da página
• Vê quais partes da página estão visíveis
• Vê quais partes da página estão “para aparecer” quando o acontece o scroll
• Move partes da página quando acontece o scroll
Como funciona?
ECMAScript
- É o padrão de implementação que o Javascript segue.(Como os
padrões W3C para HTML/CSS)
Como funciona?
ECMAScript
Como funciona?
Virtual DOM x Shadow DOM
- Encapsulamento do DOM
- Menor número de alterações
- Mais rápido
Por que eu deveria saber isso?
Animações com CSS
Utilize opacity e transform (GPU)
Por que eu deveria saber isso?
Javascript é render blocking
Por que eu deveria saber isso?
Javascript é render blocking
• Use async/defer sempre que possível
• Scripts no final do html
• Minimificar tudo
Por que eu deveria saber isso?
Qualquer request feita no head vai atrasar o carregamento da página
Por que eu deveria saber isso?
Concatene e minimifique CSS
Tenha um styleguide
Por que eu deveria saber isso?
Use CSS para ícones simples
Comprima imagens
Por que eu deveria saber isso?
Use CSS para ícones simples
Comprima imagens
Por que eu deveria saber isso?
Remova css que não está sendo usado (gulp-uncss)
Perguntas?
Obrigado!
@vinicaval
Fontes
https://developers.google.com/web/fundamentals/performance/rendering/
https://blogs.adobe.com/webplatform/2014/03/18/css-animations-and-transitions-performance/
https://developers.google.com/web/fundamentals/performance/rail?hl=en
http://arvindr21.github.io/howBrowserWorks/#/
https://www.html5rocks.com/en/tutorials/internals/howbrowserswork/
https://en.wikipedia.org/wiki/ECMAScript
https://tableless.com.br/faut-tolerant-base-progressive-enhancement/
https://docs.google.com/presentation/d/19R_E5B__kdE55L1bTpS6IFKbYbHq-
PQKKky4do5Yc6A/edit#slide=id.g105c64d69_182
https://speakerdeck.com/bevacqua/high-performance-in-the-critical-path
https://www.fourkitchens.com/blog/article/use-gulp-and-uncss-slim-down-your-css-framework/

Mais conteúdo relacionado

Mais procurados

TDC 2013 SP | Arquitetura Java: Preciso de um Framework, mas qual usar?
TDC 2013 SP | Arquitetura Java: Preciso de um Framework, mas qual usar?TDC 2013 SP | Arquitetura Java: Preciso de um Framework, mas qual usar?
TDC 2013 SP | Arquitetura Java: Preciso de um Framework, mas qual usar?tdc-globalcode
 
Aula 8 php (intro, get e post)
Aula 8   php (intro, get e post)Aula 8   php (intro, get e post)
Aula 8 php (intro, get e post)andreluizlc
 
Performance Codificando Night Week 2016
Performance Codificando Night Week 2016Performance Codificando Night Week 2016
Performance Codificando Night Week 2016Rodolfo Fadino Junior
 
Aula 5 java script
Aula 5   java scriptAula 5   java script
Aula 5 java scriptandreluizlc
 
Alta Performance em Aplicações Web
Alta Performance em Aplicações WebAlta Performance em Aplicações Web
Alta Performance em Aplicações WebAnderson Aguiar
 
SASS + COMPASS - Alta Produtividade no Front-end
SASS + COMPASS - Alta Produtividade no Front-endSASS + COMPASS - Alta Produtividade no Front-end
SASS + COMPASS - Alta Produtividade no Front-endAnderson Aguiar
 
Python na Web - Apresentando o web2py
Python na Web - Apresentando o web2pyPython na Web - Apresentando o web2py
Python na Web - Apresentando o web2pyMatheus Cardoso
 
testando interfaces web
testando interfaces webtestando interfaces web
testando interfaces webAndrews Medina
 
[MinhaVida TechDay] NoSQL
[MinhaVida TechDay] NoSQL[MinhaVida TechDay] NoSQL
[MinhaVida TechDay] NoSQLCleber Dantas
 
Como se tornar um viciado em performance em 5 passos
Como se tornar um viciado em performance em 5 passosComo se tornar um viciado em performance em 5 passos
Como se tornar um viciado em performance em 5 passosPedro Chaves
 
Otimização de infra estrutura para hospedagem de websites
Otimização de infra estrutura para hospedagem de websitesOtimização de infra estrutura para hospedagem de websites
Otimização de infra estrutura para hospedagem de websitesFabiano Weimar
 
Powershell “à minha maneira”
Powershell “à minha maneira”Powershell “à minha maneira”
Powershell “à minha maneira”pt_programar
 
MongoDB: introdução à sua próxima base de dados
MongoDB:  introdução à sua próxima base de dadosMongoDB:  introdução à sua próxima base de dados
MongoDB: introdução à sua próxima base de dadosJordan Kobellarz
 
Como desenvolver com um sistema com um front-end colossal?
Como desenvolver com um sistema com um front-end colossal?Como desenvolver com um sistema com um front-end colossal?
Como desenvolver com um sistema com um front-end colossal?Mozart Diniz
 
Performance Front-end
Performance Front-endPerformance Front-end
Performance Front-endDescomplica
 
Acelere - e melhore! - o feedback com testes automatizados rápidos - igor abade
Acelere - e melhore! - o feedback com testes automatizados rápidos - igor abadeAcelere - e melhore! - o feedback com testes automatizados rápidos - igor abade
Acelere - e melhore! - o feedback com testes automatizados rápidos - igor abadeIgor Abade
 
performance em jQuery apps
performance em jQuery appsperformance em jQuery apps
performance em jQuery appsDavidson Fellipe
 

Mais procurados (20)

TDC 2013 SP | Arquitetura Java: Preciso de um Framework, mas qual usar?
TDC 2013 SP | Arquitetura Java: Preciso de um Framework, mas qual usar?TDC 2013 SP | Arquitetura Java: Preciso de um Framework, mas qual usar?
TDC 2013 SP | Arquitetura Java: Preciso de um Framework, mas qual usar?
 
Aula 8 php (intro, get e post)
Aula 8   php (intro, get e post)Aula 8   php (intro, get e post)
Aula 8 php (intro, get e post)
 
NoSQL + Node.js
NoSQL + Node.jsNoSQL + Node.js
NoSQL + Node.js
 
Performance Codificando Night Week 2016
Performance Codificando Night Week 2016Performance Codificando Night Week 2016
Performance Codificando Night Week 2016
 
Aula 5 java script
Aula 5   java scriptAula 5   java script
Aula 5 java script
 
temp EWP
temp EWPtemp EWP
temp EWP
 
Drupal Performance
Drupal PerformanceDrupal Performance
Drupal Performance
 
Alta Performance em Aplicações Web
Alta Performance em Aplicações WebAlta Performance em Aplicações Web
Alta Performance em Aplicações Web
 
SASS + COMPASS - Alta Produtividade no Front-end
SASS + COMPASS - Alta Produtividade no Front-endSASS + COMPASS - Alta Produtividade no Front-end
SASS + COMPASS - Alta Produtividade no Front-end
 
Python na Web - Apresentando o web2py
Python na Web - Apresentando o web2pyPython na Web - Apresentando o web2py
Python na Web - Apresentando o web2py
 
testando interfaces web
testando interfaces webtestando interfaces web
testando interfaces web
 
[MinhaVida TechDay] NoSQL
[MinhaVida TechDay] NoSQL[MinhaVida TechDay] NoSQL
[MinhaVida TechDay] NoSQL
 
Como se tornar um viciado em performance em 5 passos
Como se tornar um viciado em performance em 5 passosComo se tornar um viciado em performance em 5 passos
Como se tornar um viciado em performance em 5 passos
 
Otimização de infra estrutura para hospedagem de websites
Otimização de infra estrutura para hospedagem de websitesOtimização de infra estrutura para hospedagem de websites
Otimização de infra estrutura para hospedagem de websites
 
Powershell “à minha maneira”
Powershell “à minha maneira”Powershell “à minha maneira”
Powershell “à minha maneira”
 
MongoDB: introdução à sua próxima base de dados
MongoDB:  introdução à sua próxima base de dadosMongoDB:  introdução à sua próxima base de dados
MongoDB: introdução à sua próxima base de dados
 
Como desenvolver com um sistema com um front-end colossal?
Como desenvolver com um sistema com um front-end colossal?Como desenvolver com um sistema com um front-end colossal?
Como desenvolver com um sistema com um front-end colossal?
 
Performance Front-end
Performance Front-endPerformance Front-end
Performance Front-end
 
Acelere - e melhore! - o feedback com testes automatizados rápidos - igor abade
Acelere - e melhore! - o feedback com testes automatizados rápidos - igor abadeAcelere - e melhore! - o feedback com testes automatizados rápidos - igor abade
Acelere - e melhore! - o feedback com testes automatizados rápidos - igor abade
 
performance em jQuery apps
performance em jQuery appsperformance em jQuery apps
performance em jQuery apps
 

Semelhante a Browsers como vivem o que fazem

Desenvolvemos para web?
Desenvolvemos para web?Desenvolvemos para web?
Desenvolvemos para web?Luis Vendrame
 
T03_LM3: Javascript (2013-2014)
T03_LM3: Javascript (2013-2014)T03_LM3: Javascript (2013-2014)
T03_LM3: Javascript (2013-2014)Carlos Santos
 
Sapo Sessions - Web Mobile
Sapo Sessions - Web MobileSapo Sessions - Web Mobile
Sapo Sessions - Web MobileBruno Carreira
 
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
 
Aumente a performance de seu site
Aumente a performance de seu siteAumente a performance de seu site
Aumente a performance de seu siteHenrique Lima
 
Aumente a performance de seu site de maneira disciplinada
Aumente a performance de seu site de maneira disciplinadaAumente a performance de seu site de maneira disciplinada
Aumente a performance de seu site de maneira disciplinadaHenrique Lima
 
Dicas para Workflow WordPress + JavaScript - WordCamp Salvador
Dicas para Workflow WordPress + JavaScript - WordCamp SalvadorDicas para Workflow WordPress + JavaScript - WordCamp Salvador
Dicas para Workflow WordPress + JavaScript - WordCamp SalvadorFellyph Cintra
 
Otimizacao de websites em PHP
Otimizacao de websites em PHPOtimizacao de websites em PHP
Otimizacao de websites em PHPFelipe Ribeiro
 
Big Query - Escalabilidade Infinita para os seus Dados
Big Query  - Escalabilidade Infinita para os seus DadosBig Query  - Escalabilidade Infinita para os seus Dados
Big Query - Escalabilidade Infinita para os seus DadosAlvaro Viebrantz
 
Performance Tuning de Clusters Plone - PyConBrasil 2 (2006)
Performance Tuning de Clusters Plone - PyConBrasil 2 (2006)Performance Tuning de Clusters Plone - PyConBrasil 2 (2006)
Performance Tuning de Clusters Plone - PyConBrasil 2 (2006)Fabiano Weimar
 
ASP.NET Core APIs: Performance Tips
ASP.NET Core APIs: Performance TipsASP.NET Core APIs: Performance Tips
ASP.NET Core APIs: Performance TipsAndre Baltieri
 
Planejamento de Capacidade Técnicas e Ferramentas
Planejamento de Capacidade Técnicas e FerramentasPlanejamento de Capacidade Técnicas e Ferramentas
Planejamento de Capacidade Técnicas e Ferramentasluanrjesus
 
Voce se preocupa com performance ou é sempre problema da infra
Voce se preocupa com performance ou é sempre problema da infraVoce se preocupa com performance ou é sempre problema da infra
Voce se preocupa com performance ou é sempre problema da infraCDS
 
Redis um banco chave valor
Redis um banco chave valorRedis um banco chave valor
Redis um banco chave valorKinn Julião
 
Workshop Performance Rails
Workshop Performance RailsWorkshop Performance Rails
Workshop Performance RailsVitor Pellegrino
 
BigQuery Performance Improvements Storage API
BigQuery Performance Improvements Storage APIBigQuery Performance Improvements Storage API
BigQuery Performance Improvements Storage APIAlvaro Viebrantz
 
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
 

Semelhante a Browsers como vivem o que fazem (20)

Desenvolvemos para web?
Desenvolvemos para web?Desenvolvemos para web?
Desenvolvemos para web?
 
T03_LM3: Javascript (2013-2014)
T03_LM3: Javascript (2013-2014)T03_LM3: Javascript (2013-2014)
T03_LM3: Javascript (2013-2014)
 
Sapo Sessions - Web Mobile
Sapo Sessions - Web MobileSapo Sessions - Web Mobile
Sapo Sessions - Web Mobile
 
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
 
Performance Web com ASP.NET MVC
Performance Web com ASP.NET MVCPerformance Web com ASP.NET MVC
Performance Web com ASP.NET MVC
 
Rest Teoria E Pratica
Rest Teoria E PraticaRest Teoria E Pratica
Rest Teoria E Pratica
 
Aumente a performance de seu site
Aumente a performance de seu siteAumente a performance de seu site
Aumente a performance de seu site
 
Aumente a performance de seu site de maneira disciplinada
Aumente a performance de seu site de maneira disciplinadaAumente a performance de seu site de maneira disciplinada
Aumente a performance de seu site de maneira disciplinada
 
Dicas para Workflow WordPress + JavaScript - WordCamp Salvador
Dicas para Workflow WordPress + JavaScript - WordCamp SalvadorDicas para Workflow WordPress + JavaScript - WordCamp Salvador
Dicas para Workflow WordPress + JavaScript - WordCamp Salvador
 
Otimizacao de websites em PHP
Otimizacao de websites em PHPOtimizacao de websites em PHP
Otimizacao de websites em PHP
 
Big Query - Escalabilidade Infinita para os seus Dados
Big Query  - Escalabilidade Infinita para os seus DadosBig Query  - Escalabilidade Infinita para os seus Dados
Big Query - Escalabilidade Infinita para os seus Dados
 
Performance Tuning de Clusters Plone - PyConBrasil 2 (2006)
Performance Tuning de Clusters Plone - PyConBrasil 2 (2006)Performance Tuning de Clusters Plone - PyConBrasil 2 (2006)
Performance Tuning de Clusters Plone - PyConBrasil 2 (2006)
 
ASP.NET Core APIs: Performance Tips
ASP.NET Core APIs: Performance TipsASP.NET Core APIs: Performance Tips
ASP.NET Core APIs: Performance Tips
 
Planejamento de Capacidade Técnicas e Ferramentas
Planejamento de Capacidade Técnicas e FerramentasPlanejamento de Capacidade Técnicas e Ferramentas
Planejamento de Capacidade Técnicas e Ferramentas
 
Voce se preocupa com performance ou é sempre problema da infra
Voce se preocupa com performance ou é sempre problema da infraVoce se preocupa com performance ou é sempre problema da infra
Voce se preocupa com performance ou é sempre problema da infra
 
Desenvolvimento web produtivo
Desenvolvimento web produtivoDesenvolvimento web produtivo
Desenvolvimento web produtivo
 
Redis um banco chave valor
Redis um banco chave valorRedis um banco chave valor
Redis um banco chave valor
 
Workshop Performance Rails
Workshop Performance RailsWorkshop Performance Rails
Workshop Performance Rails
 
BigQuery Performance Improvements Storage API
BigQuery Performance Improvements Storage APIBigQuery Performance Improvements Storage API
BigQuery Performance Improvements Storage API
 
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
 

Browsers como vivem o que fazem