SlideShare uma empresa Scribd logo
1 de 148
Baixar para ler offline
hoje vamos falar de

performance
“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
• 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/
• + 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
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?
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

Mais procurados

Offline Web com Service Workers - Sérgio Lopes
Offline Web com Service Workers - Sérgio LopesOffline Web com Service Workers - Sérgio Lopes
Offline Web com Service Workers - Sérgio LopesCaelum
 
Performance - Acelere seu site! Na web tempo é mais que dinheiro.
Performance - Acelere seu site! Na web tempo é mais que dinheiro.Performance - Acelere seu site! Na web tempo é mais que dinheiro.
Performance - Acelere seu site! Na web tempo é mais que dinheiro.Gustavo Corrêa Alves
 
Construindo sites e sistemas com WordPress
Construindo sites e sistemas com WordPressConstruindo sites e sistemas com WordPress
Construindo sites e sistemas com WordPressLeo Baiano
 
Descomplicando o JQuery - Introdução ao Framework
Descomplicando o JQuery - Introdução ao FrameworkDescomplicando o JQuery - Introdução ao Framework
Descomplicando o JQuery - Introdução ao FrameworkPablo Garrido
 
AngularJS com NODE.JS e Socket.IO
AngularJS com NODE.JS e Socket.IOAngularJS com NODE.JS e Socket.IO
AngularJS com NODE.JS e Socket.IODouglas Lira
 
Desenvolvimento de Módulos Divi Builder
Desenvolvimento de Módulos Divi BuilderDesenvolvimento de Módulos Divi Builder
Desenvolvimento de Módulos Divi BuilderDaniel Paz
 
Melhorando A Performance Da Sua Aplicação Web
Melhorando A Performance Da Sua Aplicação WebMelhorando A Performance Da Sua Aplicação Web
Melhorando A Performance Da Sua Aplicação WebMaurício Linhares
 
Performance e boas_praticas_de_web
Performance e boas_praticas_de_webPerformance e boas_praticas_de_web
Performance e boas_praticas_de_webThiago Verly
 
Diego Narducci - React + Angular
Diego Narducci - React + AngularDiego Narducci - React + Angular
Diego Narducci - React + AngularDiego Narducci
 
A evolução do AngularJS
A evolução do AngularJSA evolução do AngularJS
A evolução do AngularJSRodrigo Branas
 
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
 
Construindo Diretivas com AngularJS
Construindo Diretivas com AngularJSConstruindo Diretivas com AngularJS
Construindo Diretivas com AngularJSRodrigo Branas
 
Melhorando o desempenho do seu WordPress
Melhorando o desempenho do seu WordPressMelhorando o desempenho do seu WordPress
Melhorando o desempenho do seu WordPressJulian Fernandes
 

Mais procurados (20)

Dominando o customizer
Dominando o customizerDominando o customizer
Dominando o customizer
 
Offline Web com Service Workers - Sérgio Lopes
Offline Web com Service Workers - Sérgio LopesOffline Web com Service Workers - Sérgio Lopes
Offline Web com Service Workers - Sérgio Lopes
 
Performance - Acelere seu site! Na web tempo é mais que dinheiro.
Performance - Acelere seu site! Na web tempo é mais que dinheiro.Performance - Acelere seu site! Na web tempo é mais que dinheiro.
Performance - Acelere seu site! Na web tempo é mais que dinheiro.
 
Html5 workshop
Html5 workshopHtml5 workshop
Html5 workshop
 
Curso AngularJS - Parte 2
Curso AngularJS - Parte 2Curso AngularJS - Parte 2
Curso AngularJS - Parte 2
 
Construindo sites e sistemas com WordPress
Construindo sites e sistemas com WordPressConstruindo sites e sistemas com WordPress
Construindo sites e sistemas com WordPress
 
Descomplicando o JQuery - Introdução ao Framework
Descomplicando o JQuery - Introdução ao FrameworkDescomplicando o JQuery - Introdução ao Framework
Descomplicando o JQuery - Introdução ao Framework
 
AngularJS com NODE.JS e Socket.IO
AngularJS com NODE.JS e Socket.IOAngularJS com NODE.JS e Socket.IO
AngularJS com NODE.JS e Socket.IO
 
Mean Stack
Mean StackMean Stack
Mean Stack
 
React - Introdução
React - IntroduçãoReact - Introdução
React - Introdução
 
Desenvolvimento de Módulos Divi Builder
Desenvolvimento de Módulos Divi BuilderDesenvolvimento de Módulos Divi Builder
Desenvolvimento de Módulos Divi Builder
 
Melhorando A Performance Da Sua Aplicação Web
Melhorando A Performance Da Sua Aplicação WebMelhorando A Performance Da Sua Aplicação Web
Melhorando A Performance Da Sua Aplicação Web
 
Angular js
Angular jsAngular js
Angular js
 
Modern Java Web
Modern Java WebModern Java Web
Modern Java Web
 
Performance e boas_praticas_de_web
Performance e boas_praticas_de_webPerformance e boas_praticas_de_web
Performance e boas_praticas_de_web
 
Diego Narducci - React + Angular
Diego Narducci - React + AngularDiego Narducci - React + Angular
Diego Narducci - React + Angular
 
A evolução do AngularJS
A evolução do AngularJSA evolução do AngularJS
A evolução do AngularJS
 
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
 
Construindo Diretivas com AngularJS
Construindo Diretivas com AngularJSConstruindo Diretivas com AngularJS
Construindo Diretivas com AngularJS
 
Melhorando o desempenho do seu WordPress
Melhorando o desempenho do seu WordPressMelhorando o desempenho do seu WordPress
Melhorando o desempenho do seu WordPress
 

Destaque

How to create high scalable JavaScript apps for Java Portals
How to create high scalable JavaScript apps for Java PortalsHow to create high scalable JavaScript apps for Java Portals
How to create high scalable JavaScript apps for Java PortalsZeno Rocha
 
WTF Javascript - FrontInRio 2011
WTF Javascript - FrontInRio 2011WTF Javascript - FrontInRio 2011
WTF Javascript - FrontInRio 2011Leonardo Balter
 
Desbravando o HTML5 Boilerplate
Desbravando o HTML5 BoilerplateDesbravando o HTML5 Boilerplate
Desbravando o HTML5 BoilerplateZeno Rocha
 
Super Trunfo - Case de Dados Abertos
Super Trunfo - Case de Dados AbertosSuper Trunfo - Case de Dados Abertos
Super Trunfo - Case de Dados AbertosZeno Rocha
 
Javascript Orientado a Objetos - Fisl12
Javascript Orientado a Objetos - Fisl12Javascript Orientado a Objetos - Fisl12
Javascript Orientado a Objetos - Fisl12Emerson Macedo
 
Construindo Projetos Robustos em HTML5
Construindo Projetos Robustos em HTML5Construindo Projetos Robustos em HTML5
Construindo Projetos Robustos em HTML5Zeno Rocha
 
Augmented Reality in JavaScript
Augmented Reality in JavaScriptAugmented Reality in JavaScript
Augmented Reality in JavaScriptZeno Rocha
 
Os mitos do desenvolvimento front-end
Os mitos do desenvolvimento front-endOs mitos do desenvolvimento front-end
Os mitos do desenvolvimento front-endZeno Rocha
 
JavaScript for Beginners
JavaScript for BeginnersJavaScript for Beginners
JavaScript for BeginnersSAPO Sessions
 
Introdução básica ao JavaScript
Introdução básica ao JavaScriptIntrodução básica ao JavaScript
Introdução básica ao JavaScriptCarlos Eduardo Kadu
 
DOMinando JavaScript
DOMinando JavaScriptDOMinando JavaScript
DOMinando JavaScriptThiago Poiani
 
Web APIs you (probably) didn't know existed
Web APIs you (probably) didn't know existedWeb APIs you (probably) didn't know existed
Web APIs you (probably) didn't know existedZeno Rocha
 
Gamification: Future or Fail?
Gamification: Future or Fail?Gamification: Future or Fail?
Gamification: Future or Fail?Socialphysicist
 

Destaque (20)

How to create high scalable JavaScript apps for Java Portals
How to create high scalable JavaScript apps for Java PortalsHow to create high scalable JavaScript apps for Java Portals
How to create high scalable JavaScript apps for Java Portals
 
WTF Javascript - FrontInRio 2011
WTF Javascript - FrontInRio 2011WTF Javascript - FrontInRio 2011
WTF Javascript - FrontInRio 2011
 
HTML 5
HTML 5HTML 5
HTML 5
 
Desbravando o HTML5 Boilerplate
Desbravando o HTML5 BoilerplateDesbravando o HTML5 Boilerplate
Desbravando o HTML5 Boilerplate
 
Super Trunfo - Case de Dados Abertos
Super Trunfo - Case de Dados AbertosSuper Trunfo - Case de Dados Abertos
Super Trunfo - Case de Dados Abertos
 
Wordpress
WordpressWordpress
Wordpress
 
Javascript Orientado a Objetos - Fisl12
Javascript Orientado a Objetos - Fisl12Javascript Orientado a Objetos - Fisl12
Javascript Orientado a Objetos - Fisl12
 
Construindo Projetos Robustos em HTML5
Construindo Projetos Robustos em HTML5Construindo Projetos Robustos em HTML5
Construindo Projetos Robustos em HTML5
 
Augmented Reality in JavaScript
Augmented Reality in JavaScriptAugmented Reality in JavaScript
Augmented Reality in JavaScript
 
It's Javascript Time
It's Javascript TimeIt's Javascript Time
It's Javascript Time
 
Aula javascript
Aula  javascriptAula  javascript
Aula javascript
 
Javascript para adultos
Javascript para adultosJavascript para adultos
Javascript para adultos
 
Os mitos do desenvolvimento front-end
Os mitos do desenvolvimento front-endOs mitos do desenvolvimento front-end
Os mitos do desenvolvimento front-end
 
Personal Kanban
Personal KanbanPersonal Kanban
Personal Kanban
 
JavaScript for Beginners
JavaScript for BeginnersJavaScript for Beginners
JavaScript for Beginners
 
Introdução básica ao JavaScript
Introdução básica ao JavaScriptIntrodução básica ao JavaScript
Introdução básica ao JavaScript
 
Introdução ao JavaScript
Introdução ao JavaScriptIntrodução ao JavaScript
Introdução ao JavaScript
 
DOMinando JavaScript
DOMinando JavaScriptDOMinando JavaScript
DOMinando JavaScript
 
Web APIs you (probably) didn't know existed
Web APIs you (probably) didn't know existedWeb APIs you (probably) didn't know existed
Web APIs you (probably) didn't know existed
 
Gamification: Future or Fail?
Gamification: Future or Fail?Gamification: Future or Fail?
Gamification: Future or Fail?
 

Semelhante a 27 Otimize Performance Front-end

RubyConfBr 2015 - Rails & Javascript: faça isso direito
RubyConfBr 2015 - Rails & Javascript: faça isso direitoRubyConfBr 2015 - Rails & Javascript: faça isso direito
RubyConfBr 2015 - Rails & Javascript: faça isso direitoCezinha Anjos
 
LambdaDay: Backbone.js
LambdaDay: Backbone.jsLambdaDay: Backbone.js
LambdaDay: Backbone.jsGiovanni Bassi
 
Backbone.js nas trincheiras
Backbone.js nas trincheirasBackbone.js nas trincheiras
Backbone.js nas trincheirasLambda 3
 
Evento Front End SP - Arquitetura de Front
Evento Front End SP - Arquitetura de FrontEvento Front End SP - Arquitetura de Front
Evento Front End SP - Arquitetura de FrontMichel Ribeiro
 
Escrevendo códigos php seguros
Escrevendo códigos php segurosEscrevendo códigos php seguros
Escrevendo códigos php segurosDouglas V. Pasqua
 
JavaScript e JQuery para Webdesigners
JavaScript e JQuery para WebdesignersJavaScript e JQuery para Webdesigners
JavaScript e JQuery para WebdesignersHarlley Oliveira
 
Estrutura de um Front-End eficiente (para iniciantes)
Estrutura de um Front-End eficiente (para iniciantes)Estrutura de um Front-End eficiente (para iniciantes)
Estrutura de um Front-End eficiente (para iniciantes)Sérgio Vilar
 
Alta Performance em Aplicações Web
Alta Performance em Aplicações WebAlta Performance em Aplicações Web
Alta Performance em Aplicações WebAnderson Aguiar
 
O que todos os developers devem saber sobre seo
O que todos os developers devem saber sobre seoO que todos os developers devem saber sobre seo
O que todos os developers devem saber sobre seointrofini
 
TDC 2015 - Rails & Javascript: faça isso direito
TDC 2015 - Rails & Javascript: faça isso direitoTDC 2015 - Rails & Javascript: faça isso direito
TDC 2015 - Rails & Javascript: faça isso direitoCezinha Anjos
 
don't repeat yourself front-ender
don't repeat yourself front-enderdon't repeat yourself front-ender
don't repeat yourself front-endertdc-globalcode
 
Programando para programadores: Desafios na evolução de um Framework
Programando para programadores: Desafios na evolução de um FrameworkProgramando para programadores: Desafios na evolução de um Framework
Programando para programadores: Desafios na evolução de um FrameworkPablo Dall'Oglio
 
Workshop Node.js + MongoDB + Mongoose
Workshop Node.js + MongoDB + MongooseWorkshop Node.js + MongoDB + Mongoose
Workshop Node.js + MongoDB + MongooseLuiz Duarte
 
Introdução ao framework CakePHP
Introdução ao framework CakePHPIntrodução ao framework CakePHP
Introdução ao framework CakePHPigorpimentel
 
Mini Curso - jQuery - FMU
Mini Curso - jQuery - FMUMini Curso - jQuery - FMU
Mini Curso - jQuery - FMUThiago Ericson
 
Simplificando o Javascrip
Simplificando o JavascripSimplificando o Javascrip
Simplificando o JavascripMiquéias Amaro
 

Semelhante a 27 Otimize Performance Front-end (20)

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

Mais de Zeno Rocha

Future of Web Development
Future of Web DevelopmentFuture of Web Development
Future of Web DevelopmentZeno Rocha
 
Liferay + Wearables
Liferay + WearablesLiferay + Wearables
Liferay + WearablesZeno Rocha
 
Como empreender em... você!
Como empreender em... você!Como empreender em... você!
Como empreender em... você!Zeno Rocha
 
Liferay UI (R)evolution
Liferay UI (R)evolutionLiferay UI (R)evolution
Liferay UI (R)evolutionZeno Rocha
 
Getting started with YUI3 and AlloyUI
Getting started with YUI3 and AlloyUIGetting started with YUI3 and AlloyUI
Getting started with YUI3 and AlloyUIZeno Rocha
 

Mais de Zeno Rocha (6)

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

27 Otimize Performance Front-end