como perder peso (no browser)

148

Upload: zeno-rocha

Post on 02-Jul-2015

4.053 views

Category:

Technology


0 download

DESCRIPTION

Rio.JS Conf - 09/03/13 - Rio de Janeiro, Brasil

TRANSCRIPT

Page 1: Como Perder Peso (no browser)
Page 2: Como Perder Peso (no browser)
Page 3: Como Perder Peso (no browser)
Page 4: Como Perder Peso (no browser)
Page 5: Como Perder Peso (no browser)
Page 6: Como Perder Peso (no browser)
Page 7: Como Perder Peso (no browser)
Page 8: Como Perder Peso (no browser)
Page 9: Como Perder Peso (no browser)

hoje vamos falar de performance

Page 10: Como Perder Peso (no browser)
Page 11: Como Perder Peso (no browser)
Page 12: Como Perder Peso (no browser)
Page 13: 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

Page 15: Como Perder Peso (no browser)
Page 16: Como Perder Peso (no browser)

• Economizar 1kb significa:

• Em 60 segundos = 3.4GB

Fonte: http://jaydson.org/talks/x-web-performance/

Page 17: Como Perder Peso (no browser)

• Economizar 1kb significa:

• Em 1 hora = 180GB

Fonte: http://jaydson.org/talks/x-web-performance/

Page 18: Como Perder Peso (no browser)

• Economizar 1kb significa:

• Em 1 dia = 4.2TB

Fonte: http://jaydson.org/talks/x-web-performance/

Page 19: Como Perder Peso (no browser)
Page 20: 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/

Page 21: Como Perder Peso (no browser)

• 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/

Page 22: Como Perder Peso (no browser)

• Diminuir 3.2s resultou em:

• Aumento de receita deR$ 1.000.000,00 por dia

Fonte: http://www.slideshare.net/keppelen/performance-frontend-front-in-macei/

Page 23: Como Perder Peso (no browser)

html

CSS

imagens

servidor

jquery

JS

Page 24: Como Perder Peso (no browser)
Page 25: Como Perder Peso (no browser)

html

Page 26: Como Perder Peso (no browser)

#27evitecódigosinline

Page 27: Como Perder Peso (no browser)

inline

#27

<style>.center { width: 960px; margin: 0 auto;}</style>

- requisições+tamanho

Page 28: Como Perder Peso (no browser)

externo

#27

<link rel="stylesheet" href="main.css">

+ organização- tamanho+ cache

Page 29: Como Perder Peso (no browser)

#26

estilos no topo,scripts no rodapé

Page 30: Como Perder Peso (no browser)

#26<!doctype html><html><head>

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

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

</head>

Page 31: Como Perder Peso (no browser)

#26<body>

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

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

</body></html>

Page 32: Como Perder Peso (no browser)

comprima seu html

#25

Page 33: Como Perder Peso (no browser)

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>

Page 34: Como Perder Peso (no browser)

#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>

comprimido

Page 37: Como Perder Peso (no browser)

#24

experimenteasync & defer

Page 38: Como Perder Peso (no browser)

#24

script normal<script src="example.js"></script>

Page 39: Como Perder Peso (no browser)

#24

script async<script async src="example.js"></script>

+ie10

Page 40: Como Perder Peso (no browser)

#24

script defer<script defer src="example.js"></script>

+ie5

Page 41: Como Perder Peso (no browser)

CSS

Page 42: Como Perder Peso (no browser)

comprima seu css

#23

Page 43: Como Perder Peso (no browser)

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

/* --- Structure --- */

.intro { margin: 100px; }

Page 44: Como Perder Peso (no browser)

#23comprimido.center{width:960px;margin:0 auto;}.intro{margin:100px;position:relative;}

Page 46: Como Perder Peso (no browser)

http://www.cssminifier.com/

Page 48: Como Perder Peso (no browser)

combine váriosarquivosem um só#22

Page 49: Como Perder Peso (no browser)

#22<link rel="stylesheet" href="structure.css"><link rel="stylesheet" href="banner.css"><link rel="stylesheet" href="layout.css"><link rel="stylesheet" href="component.css">

<link rel="stylesheet" href="all.css">

vs

Page 50: Como Perder Peso (no browser)

http://gruntjs.com/

Page 51: Como Perder Peso (no browser)

não useseletor

universal

#21

Page 52: Como Perder Peso (no browser)

* { margin: 0; padding: 0; border: none; text-decoration: none; outline: 0;}

#21

Page 55: Como Perder Peso (no browser)

prefira <link> ao @import

#20

Page 56: Como Perder Peso (no browser)

<link rel="stylesheet" href="style.css">

#20

vs@import url('style.css');

Page 57: Como Perder Peso (no browser)

pense erepense seu key selector

#19

Page 58: Como Perder Peso (no browser)

key selector >> aheader nav ul li a {}

#19

Page 59: Como Perder Peso (no browser)

key selectorheader 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

Page 60: Como Perder Peso (no browser)

JAVASCRIPT

Page 61: Como Perder Peso (no browser)

códigos de terceiros?sempre assíncronos

#18

Page 62: Como Perder Peso (no browser)

asyncvar script = document.createElement('script'), scripts = document.getElementsByTagName('script')[0];

script.async = true;script.src = url;scripts.parentNode.insertBefore(script,

#18

Page 63: Como Perder Peso (no browser)

guarde otamanhodo array

#17

Page 64: Como Perder Peso (no browser)

ruim...var arr = new Array(1000);

for (var i = 0; i < arr.length; i++) { // O tamanho do array é calculado 1000}

#17

Page 65: Como Perder Peso (no browser)

bom!var arr = new Array(1000);

for (var i = 0, len = arr.length; i < len; i++) { // O tamanho só é calculado 1 vez e armazenado}

#17

Page 68: Como Perder Peso (no browser)

evite odocument.write#16

Page 69: Como Perder Peso (no browser)

html5 boilerplate<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>

#16

Page 70: Como Perder Peso (no browser)

minimizerepaintse reflows#15

Page 71: Como Perder Peso (no browser)

ruim...var myList = document.getElementById("myList");

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

#15

Page 72: Como Perder Peso (no browser)

var myList = "";

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

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

bom!

#15

Page 75: Como Perder Peso (no browser)

comprima seu js

#14

Page 76: Como Perder Peso (no browser)

normal #14BrowserDiet.app = function() {

var foo = true;

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

};

Page 77: Como Perder Peso (no browser)

comprimidoBrowserDiet.app=function(){return{bar:function(){}}};

#14

Page 81: Como Perder Peso (no browser)

combine váriosarquivosem um só#13

Page 82: Como Perder Peso (no browser)

#13<script src="navbar.js"></script><script src="component.js"></script><script src="page.js"></script><script src="framework.js"></script>

<script src="all.js"></script>

vs

Page 83: Como Perder Peso (no browser)

http://gruntjs.com/

Page 84: Como Perder Peso (no browser)

jquery

Page 85: Como Perder Peso (no browser)

use semprea última versão

#12

Page 86: Como Perder Peso (no browser)

<script src="http://code.jquery.com/jquery-latest.js"></script>

#12

vs<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>

Page 87: Como Perder Peso (no browser)

seletores#11

Page 88: Como Perder Peso (no browser)

#11

findchildren

.class

#id

context

Page 89: Como Perder Peso (no browser)

#11

$("#foo");

id é mais rapido

Page 92: Como Perder Peso (no browser)

abuse doencadeamento

#10

Page 93: Como Perder Peso (no browser)

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

#10

Page 94: Como Perder Peso (no browser)

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

#10

Page 97: Como Perder Peso (no browser)

use forao invésde each

#9

Page 98: Como Perder Peso (no browser)

#9

while reversofor

$.each

for in

Page 99: Como Perder Peso (no browser)

#9

for ( var i = 0, len = a.length; i < len; i++ ) { e = a[i];}

for é mais rapido

Page 102: Como Perder Peso (no browser)

não usejquery

#8

Page 103: Como Perder Peso (no browser)

jquery$('a').on('click', function() { console.log( $(this).attr('id') );});

#8

Page 104: Como Perder Peso (no browser)

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

#8

Page 107: Como Perder Peso (no browser)

imagens

Page 108: Como Perder Peso (no browser)

css sprites#7

Page 109: Como Perder Peso (no browser)

imagem #7

Page 110: Como Perder Peso (no browser)

css #7.icon-foo { background-image: url('mySprite.png'); background-position: -10px -10px;}

.icon-bar { background-image: url('mySprite.png'); background-position: -5px -5px;}

Page 111: Como Perder Peso (no browser)

http://wearekiss.com/spritepad

Page 112: Como Perder Peso (no browser)

http://www.spritecow.com/

Page 114: Como Perder Peso (no browser)

não escaleas imagensdireto nocódigo #6

Page 115: Como Perder Peso (no browser)

html

#6

<img width="100" height="100" src="logo.jpg" alt="Logo">

Page 116: Como Perder Peso (no browser)

otimize asimagens#5

Page 117: Como Perder Peso (no browser)

#5

losslesspng 8

png 24

jpg

gif

Page 118: Como Perder Peso (no browser)

servidor

Page 119: Como Perder Peso (no browser)

habilite ocaches dosarquivos#4

Page 120: Como Perder Peso (no browser)

.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"

Page 121: Como Perder Peso (no browser)

gzip#3

#4 - Habilite o cache dos arquivos

Page 122: Como Perder Peso (no browser)

.htaccess #3

AddOutputFilterByType DEFLATE text/htmlAddOutputFilterByType DEFLATE text/plainAddOutputFilterByType DEFLATE text/xmlAddOutputFilterByType DEFLATE text/cssAddOutputFilterByType DEFLATE application/javascript

Page 123: Como Perder Peso (no browser)

bonus^

Page 124: Como Perder Peso (no browser)

ferramentasde análise

#2

Page 125: Como Perder Peso (no browser)

http://yslow.org/

Page 127: Como Perder Peso (no browser)

http://www.webpagetest.org/

Page 128: Como Perder Peso (no browser)

performance deve ser pensada no projeto

como um todo

Page 129: Como Perder Peso (no browser)

e não só deixar pra testar no finalzinho

Page 130: Como Perder Peso (no browser)

lembre-se

Page 131: Como Perder Peso (no browser)

o preguiçosotrabalha dobrado

Page 132: Como Perder Peso (no browser)

quero aprender mais,aonde eu vou?

Page 133: Como Perder Peso (no browser)
Page 134: Como Perder Peso (no browser)
Page 137: Como Perder Peso (no browser)

nada emportuguês?

Page 138: Como Perder Peso (no browser)

e se a gentejuntasse...

Page 139: Como Perder Peso (no browser)

renato mangini- google

Page 140: Como Perder Peso (no browser)

sérgio lopes- caelum

Page 141: Como Perder Peso (no browser)

mike taylor- opera

Page 142: Como Perder Peso (no browser)

marcel duran- twitter

Page 143: Como Perder Peso (no browser)

“Pica voando das galáxiascriado em cativeiro”

browserdiet.com

Page 145: Como Perder Peso (no browser)

“Pica voando das galáxiascriado em cativeiro”

- Bernard de Luna

Page 146: Como Perder Peso (no browser)

“Pica voando das galáxiascriado em cativeiro”

- Bernard de Luna

Page 147: Como Perder Peso (no browser)

2º Encontro - 2011

Page 148: Como Perder Peso (no browser)

fim.

zenorocha.combrowserdiet.com#1