SlideShare uma empresa Scribd logo
Como Perder Peso (no browser)
Como Perder Peso (no browser)
Como Perder Peso (no browser)
Como Perder Peso (no browser)
Como Perder Peso (no browser)
Como Perder Peso (no browser)
Como Perder Peso (no browser)
Como Perder Peso (no browser)
hoje vamos falar de

performance
Como Perder Peso (no browser)
Como Perder Peso (no browser)
Como Perder Peso (no browser)
“Otimize a performance do
front-end primeiro, é onde
80/90% do tempo de resposta
ao usuário é gasto.”

            - Steve Souders
http://googlewebmastercentral.blogspot.com.br/2010/04/using-site-speed-in-web-search-ranking.html
Como Perder Peso (no browser)
• Economizar 1kb significa:
• Em 60 segundos = 3.4GB
        Fonte: http://jaydson.org/talks/x-web-performance/
• Economizar 1kb significa:
• Em 1 hora = 180GB
         Fonte: http://jaydson.org/talks/x-web-performance/
• Economizar 1kb significa:
• Em 1 dia = 4.2TB
         Fonte: http://jaydson.org/talks/x-web-performance/
Como Perder Peso (no browser)
• + 15.000.000 de acessos por dia
• De 3mb para 267kb
• De 7.5s para 4.3s
   Fonte: http://www.slideshare.net/keppelen/performance-frontend-front-in-macei/
• Diminuir 3.2s resultou em:
• Redução de custo em servidores de
  R$ 16.000,00 por dia


  Fonte: http://www.slideshare.net/keppelen/performance-frontend-front-in-macei/
• Diminuir 3.2s resultou em:
• Aumento de receita de
  R$ 1.000.000,00 por dia


   Fonte: http://www.slideshare.net/keppelen/performance-frontend-front-in-macei/
html  jquery
   imagens
            JS
CSS
      servidor
Como Perder Peso (no browser)
html
#27
evite
códigos
inline
inline
<style>
.center {
  width: 960px;
  margin: 0 auto;
}
</style>


- requisições
+tamanho            #27
externo
<link rel="stylesheet" href="main.css">




+ organização
- tamanho
+ cache                        #27
estilos no topo,
scripts no rodapé
            #26
#26
<!doctype html>
<html>
<head>

  <meta charset="UTF-8">
  <title>Browser Diet</title>

  <!-- CSS -->
  <link rel="stylesheet" href="style.css">

</head>
#26
<body>

  <p>Lorem ipsum dolor sit amet.</p>

  <!-- JS -->
  <script src="script.js"></script>

</body>
</html>
comprima
seu html

#25
normal
                               #25
<p>Lorem ipsum dolor sit amet.</p>

<!-- My List -->
<ul>
  <li><a href="#"></a></li>
  <li><a href="#"></a></li>
  <li><a href="#"></a></li>
</ul>
comprimido
                               #25
<p>Lorem ipsum dolor sit amet.</
p><ul><li><a href="#"></a></li><li><a
href="#"></a></li><li><a href="#"></a></
li></ul>
https://code.google.com/p/htmlcompressor/
https://github.com/jney/grunt-htmlcompressor
#24

  experimente
async & defer
#24
  script normal
<script src="example.js"></script>
#24
       script async
<script async src="example.js"></script>




+ie10
#24
       script defer
<script defer src="example.js"></script>




+ie5
CSS
comprima
seu css

#23
normal
                            #23
.center {
  width: 960px;
  margin: 0 auto;
}

/* --- Structure --- */

.intro { margin: 100px; }
comprimido
                               #23
.center{width:960px;margin:0
auto;}.intro{margin:
100px;position:relative;}
http://yui.github.com/yuicompressor/
http://www.cssminifier.com/
https://github.com/jzaefferer/grunt-css
combine vários
arquivos
em um só
#22
#22
<link   rel="stylesheet"   href="structure.css">
<link   rel="stylesheet"   href="banner.css">
<link   rel="stylesheet"   href="layout.css">




                     vs
<link   rel="stylesheet"   href="component.css">




<link rel="stylesheet" href="all.css">
http://gruntjs.com/
#21
 não use
  seletor
universal
#21
* {
  margin: 0;
  padding: 0;
  border: none;
  text-decoration: none;
  outline: 0;
}
http://meyerweb.com/eric/tools/css/reset/
http://necolas.github.com/normalize.css/
#20
prefira
<link> ao
@import
#20
<link rel="stylesheet" href="style.css">



                 vs
        @import url('style.css');
pense e
repense seu
key selector
       #19
key selector >> a
header nav ul li a {}




                        #19
key selector
header nav ul li * { /* Péssimo */ }
header nav ul li a { /* Muito Ruim */ }
nav a { /* Ruim */ }
nav a.nav-link { /* Bom */ }
nav .nav-link { /* Ótimo */ }
.nav-link { /* Excelente */ }



                                #19
JAVASCRIPT
códigos de    #18
terceiros?
sempre
assíncronos
async
                                   #18
var script = document.createElement('script'),
    scripts =
document.getElementsByTagName('script')[0];

script.async = true;
script.src = url;
scripts.parentNode.insertBefore(script,
guarde o
tamanho
do array
    #17
ruim...
                               #17
var arr = new Array(1000);

for (var i = 0; i < arr.length; i++) {
  // O tamanho do array é calculado 1000
}
bom!
                                     #17
var arr = new Array(1000);

for (var i = 0, len = arr.length; i < len; i++) {
  // O tamanho só é calculado 1 vez e armazenado
}
http://jsperf.com/browser-diet-cache-array-length
http://jsperf.com/browser-diet-cache-array-length
#16 evite o
 document.write
html5 boilerplate
                                     #16
<script src="//ajax.googleapis.com/ajax/libs/
jquery/1.9.0/jquery.min.js"></script>

<script>window.jQuery || document.write('<script
src="js/vendor/jquery-1.9.0.min.js"></
script>')</script>
minimize
repaints
e reflows
#15
ruim...
var myList = document.getElementById("myList");

for (var i = 0; i < 100; i++) {
  myList.innerHTML += "<span>" + i + "</span>";
}




#15
bom!
var myList = "";

for (var i = 0; i < 100; i++) {
  myList += "<span>" + i + "</span>";
}

document.getElementById("myList").innerHTML =
myList;




#15
http://jsperf.com/browser-diet-dom-manipulation
http://jsperf.com/browser-diet-dom-manipulation
comprima
seu js

#14
normal
                                 #14
BrowserDiet.app = function() {

 var foo = true;

 return {
    bar: function() {
      // do something
    }
 };

};
comprimido
                              #14
BrowserDiet.app=function()
{return{bar:function(){}}};
http://yui.github.com/yuicompressor/
https://developers.google.com/closure/compiler/?hl=pt
https://github.com/mishoo/UglifyJS
combine vários
arquivos
em um só
#13
#13
<script   src="navbar.js"></script>
<script   src="component.js"></script>
<script   src="page.js"></script>



                   vs
<script   src="framework.js"></script>




<script src="all.js"></script>
http://gruntjs.com/
jquery
#12
use sempre
a última
versão
#12
<script src="http://code.jquery.com/jquery-latest.js"></script>




                            vs
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
seletores
    #11
find          #id
         children
.class
   context     #11
id é mais rapido
$("#foo");




                   #11
http://jsperf.com/browser-diet-jquery-selectors
http://jsperf.com/browser-diet-jquery-selectors
abuse do
encadeamento


#10
não encadeando
$("#object").addClass("foo");
$("#object").css("border-color","#f0f");
$("#object").width(200);
$("#object").removeClass("bar");




#10
encadeando
$("#object").addClass("foo").css("border-color",
"#ccc").width(200).addClass("bar");




#10
http://jsperf.com/browser-diet-chaining
http://jsperf.com/browser-diet-chaining
#9
use for
ao invés
de each
while reverso
                for
      $.each

 for in         #9
for é mais rapido
for ( var i = 0, len = a.length; i < len; i++ ) {
    e = a[i];
}




                                      #9
http://jsperf.com/browser-diet-jquery-each-vs-for-loop
http://jsperf.com/browser-diet-jquery-each-vs-for-loop
#8
não use
 jquery
jquery
$('a').on('click', function() {
  console.log( $(this).attr('id') );
});




 #8
js puro
$('a').on('click', function() {
  console.log( this.id );
});




 #8
http://jsperf.com/browser-diet-this-attr-id-vs-this-id
http://jsperf.com/browser-diet-this-attr-id-vs-this-id
imagens
css sprites
#7
imagem   #7
css                              #7
.icon-foo {
  background-image: url('mySprite.png');
  background-position: -10px -10px;
}

.icon-bar {
  background-image: url('mySprite.png');
  background-position: -5px -5px;
}
http://wearekiss.com/spritepad
http://www.spritecow.com/
http://compass-style.org/help/tutorials/spriting/
não escale
as imagens
direto no
código #6
html
<img width="100" height="100"
src="logo.jpg" alt="Logo">




                                #6
otimize as
imagens
#5
lossless            jpg
            png 8
png 24
      gif            #5
servidor
habilite o
caches dos
arquivos
#4
.htaccess
                                           #4
ExpiresActive   On
ExpiresByType   image/gif "access plus 6 months"
ExpiresByType   image/jpeg "access plus 6 months"
ExpiresByType   image/png "access plus 6 months"
ExpiresByType   text/css "access plus 6 months"
ExpiresByType   text/javascript "access plus 6 months"
gzip
#3     #4 - Habilite o cache dos arquivos
.htaccess
                                             #3
AddOutputFilterByType   DEFLATE   text/html
AddOutputFilterByType   DEFLATE   text/plain
AddOutputFilterByType   DEFLATE   text/xml
AddOutputFilterByType   DEFLATE   text/css
AddOutputFilterByType   DEFLATE   application/javascript
^
bonus
ferramentas
de análise

#2
http://yslow.org/
https://developers.google.com/speed/pagespeed/insights_extensions?hl=pt-BR
http://www.webpagetest.org/
performance deve ser
 pensada no projeto
    como um todo
e não só deixar pra
testar no finalzinho
lembre-se
o preguiçoso
trabalha dobrado
quero aprender mais,

aonde eu vou?
Como Perder Peso (no browser)
Como Perder Peso (no browser)
https://developers.google.com/speed/docs/best-practices/rules_intro
http://developer.yahoo.com/performance/rules.html
nada em
português?
e se a gente
juntasse...
renato mangini
- google
sérgio lopes
   - caelum
mike taylor
- opera
marcel duran
    - twitter
“Pica voando das galáxias
criado em cativeiro”




              browserdiet.com
http://github.com/zenorocha/browser-diet
“Pica voando das galáxias
criado em cativeiro”
      - Bernard de Luna
“Pica voando das galáxias
criado em cativeiro”
      - Bernard de Luna
2º Encontro - 2011
fim.


         zenorocha.com
#1     browserdiet.com

Mais conteúdo relacionado

PDF
Otimizacao Front-End para WordPress - OlhoSEO 2013
PDF
Um futuro chamado Web Components
PDF
O Poderoso AngularJS
PDF
AngularJS Abraçando o MVC Client-Side
PPTX
Introdução ao AngularJS
PPTX
PDF
Reduzindo Tempo de Resposta do Servidor - WordCamp BH 2014
PDF
Coisas que eu gostaria de saber antes de começar a desenvolver temas e plugin...
Otimizacao Front-End para WordPress - OlhoSEO 2013
Um futuro chamado Web Components
O Poderoso AngularJS
AngularJS Abraçando o MVC Client-Side
Introdução ao AngularJS
Reduzindo Tempo de Resposta do Servidor - WordCamp BH 2014
Coisas que eu gostaria de saber antes de começar a desenvolver temas e plugin...

Mais procurados (20)

PDF
Dominando o customizer
PDF
Offline Web com Service Workers - Sérgio Lopes
PDF
Performance - Acelere seu site! Na web tempo é mais que dinheiro.
PDF
Html5 workshop
PDF
Curso AngularJS - Parte 2
PDF
Construindo sites e sistemas com WordPress
PPS
Descomplicando o JQuery - Introdução ao Framework
PDF
AngularJS com NODE.JS e Socket.IO
PDF
Mean Stack
PDF
React - Introdução
PDF
Desenvolvimento de Módulos Divi Builder
PPTX
Melhorando A Performance Da Sua Aplicação Web
PDF
Angular js
PDF
Modern Java Web
PPT
Performance e boas_praticas_de_web
PPTX
Diego Narducci - React + Angular
PPTX
A evolução do AngularJS
PPT
SASS + COMPASS - Alta Produtividade no Front-end
PPTX
Construindo Diretivas com AngularJS
PDF
Melhorando o desempenho do seu WordPress
Dominando o customizer
Offline Web com Service Workers - Sérgio Lopes
Performance - Acelere seu site! Na web tempo é mais que dinheiro.
Html5 workshop
Curso AngularJS - Parte 2
Construindo sites e sistemas com WordPress
Descomplicando o JQuery - Introdução ao Framework
AngularJS com NODE.JS e Socket.IO
Mean Stack
React - Introdução
Desenvolvimento de Módulos Divi Builder
Melhorando A Performance Da Sua Aplicação Web
Angular js
Modern Java Web
Performance e boas_praticas_de_web
Diego Narducci - React + Angular
A evolução do AngularJS
SASS + COMPASS - Alta Produtividade no Front-end
Construindo Diretivas com AngularJS
Melhorando o desempenho do seu WordPress
Anúncio

Destaque (20)

PDF
How to create high scalable JavaScript apps for Java Portals
PDF
WTF Javascript - FrontInRio 2011
PPT
HTML 5
PDF
Desbravando o HTML5 Boilerplate
KEY
Super Trunfo - Case de Dados Abertos
PPTX
Wordpress
PDF
Javascript Orientado a Objetos - Fisl12
PDF
Construindo Projetos Robustos em HTML5
PDF
Augmented Reality in JavaScript
PDF
It's Javascript Time
PPT
Aula javascript
ODP
Javascript para adultos
PDF
Os mitos do desenvolvimento front-end
PDF
Personal Kanban
PDF
JavaScript for Beginners
PPTX
Introdução básica ao JavaScript
PDF
Introdução ao JavaScript
PDF
DOMinando JavaScript
PDF
Web APIs you (probably) didn't know existed
PPTX
Gamification: Future or Fail?
How to create high scalable JavaScript apps for Java Portals
WTF Javascript - FrontInRio 2011
HTML 5
Desbravando o HTML5 Boilerplate
Super Trunfo - Case de Dados Abertos
Wordpress
Javascript Orientado a Objetos - Fisl12
Construindo Projetos Robustos em HTML5
Augmented Reality in JavaScript
It's Javascript Time
Aula javascript
Javascript para adultos
Os mitos do desenvolvimento front-end
Personal Kanban
JavaScript for Beginners
Introdução básica ao JavaScript
Introdução ao JavaScript
DOMinando JavaScript
Web APIs you (probably) didn't know existed
Gamification: Future or Fail?
Anúncio

Semelhante a Como Perder Peso (no browser) (20)

PDF
RubyConfBr 2015 - Rails & Javascript: faça isso direito
PPTX
LambdaDay: Backbone.js
PPTX
Backbone.js nas trincheiras
PDF
Evento Front End SP - Arquitetura de Front
PDF
Ruby On Rails Regis
PDF
Zend Framework
PDF
Escrevendo códigos php seguros
PDF
JavaScript e JQuery para Webdesigners
PDF
Estrutura de um Front-End eficiente (para iniciantes)
PDF
Alta Performance em Aplicações Web
PDF
Web Performance Client Side
PDF
O que todos os developers devem saber sobre seo
PDF
TDC 2015 - Rails & Javascript: faça isso direito
PDF
don't repeat yourself front-ender
PDF
Programando para programadores: Desafios na evolução de um Framework
PDF
Arquitetura CSS
PDF
Workshop Node.js + MongoDB + Mongoose
PDF
Introdução ao framework CakePHP
PPTX
Mini Curso - jQuery - FMU
PDF
Simplificando o Javascrip
RubyConfBr 2015 - Rails & Javascript: faça isso direito
LambdaDay: Backbone.js
Backbone.js nas trincheiras
Evento Front End SP - Arquitetura de Front
Ruby On Rails Regis
Zend Framework
Escrevendo códigos php seguros
JavaScript e JQuery para Webdesigners
Estrutura de um Front-End eficiente (para iniciantes)
Alta Performance em Aplicações Web
Web Performance Client Side
O que todos os developers devem saber sobre seo
TDC 2015 - Rails & Javascript: faça isso direito
don't repeat yourself front-ender
Programando para programadores: Desafios na evolução de um Framework
Arquitetura CSS
Workshop Node.js + MongoDB + Mongoose
Introdução ao framework CakePHP
Mini Curso - jQuery - FMU
Simplificando o Javascrip

Mais de Zeno Rocha (6)

PDF
Future of Web Development
PDF
Tracking.js
PDF
Liferay + Wearables
PDF
Como empreender em... você!
PDF
Liferay UI (R)evolution
PDF
Getting started with YUI3 and AlloyUI
Future of Web Development
Tracking.js
Liferay + Wearables
Como empreender em... você!
Liferay UI (R)evolution
Getting started with YUI3 and AlloyUI

Último (8)

PPTX
Mecânico de Manutenção de Equipamentos.pptx
PDF
Termos utilizados na designação de relação entre pessoa e uma obra.pdf
PPTX
Viasol Energia Solar -Soluções para geração e economia de energia
PDF
Manejo integrado de pragas na cultura do algodão
PPTX
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
PPTX
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
PPTX
Arquitetura de computadores - Memórias Secundárias
PPTX
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
Mecânico de Manutenção de Equipamentos.pptx
Termos utilizados na designação de relação entre pessoa e uma obra.pdf
Viasol Energia Solar -Soluções para geração e economia de energia
Manejo integrado de pragas na cultura do algodão
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
Arquitetura de computadores - Memórias Secundárias
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx

Como Perder Peso (no browser)