SlideShare ist ein Scribd-Unternehmen logo
1 von 31
Downloaden Sie, um offline zu lesen
Seu site voando
Maurício Linhares - @mauriciojr
sábado, 13 de novembro de 2010
Quem?
Java, Ruby, Objective-C, whatever
Developer da OfficeDrop.com
Agile Coach que escreve código
Finge que é músico jogando Rock band
sábado, 13 de novembro de 2010
Onde?
sábado, 13 de novembro de 2010
Aprenda a respeitar o
protocolo HTTP
Ler o RFC ajuda
sábado, 13 de novembro de 2010
GET é PEGAR uma
CÓPIA, macho
Dicionário: não cause alteraçoes no seu BANCO,
mané
sábado, 13 de novembro de 2010
Quando usar GET?
Visualizar informaçoes
Buscar informaçoes (usuários devem ser
capazes de fazer bookmarking)
Análise de tráfego (Analytics? Alguém?)
sábado, 13 de novembro de 2010
POST é MANDAR um
mói de coisa, abestado
E isso pode causar mudanças no seu BANCO
sábado, 13 de novembro de 2010
Princípio da
idempotência
Vários GETs == mesmo resultado
Vários POSTs == várias linhas no banco
sábado, 13 de novembro de 2010
Google Web Accelerator
Uma história épica e dramática em um único
capítulo, no seu Netscape mais próximo
sábado, 13 de novembro de 2010
Otimizações de front-
end
Mais fácil do que achar um cearense que não
sabe contar piada
sábado, 13 de novembro de 2010
Use um proxy-server pra
servir o seu conteúdo
Nginx, por favor
!"#$%&
!"#$%&'
('
!"#$%&''
)'
!"#$%&''
*'
sábado, 13 de novembro de 2010
Defina cabeçalhos de
expires pra todo o
conteúdo estático em um
futuro muito distante
sábado, 13 de novembro de 2010
Problemas?
Se você atualizar o arquivo, o browser não
vai ver
É necessário renomear os arquivos ou mudar
a chamada pra eles
/javascripts/jquery.js?12398766
sábado, 13 de novembro de 2010
Nginx config
location ~ ^/(images|javascripts|stylesheets)/ {
root /home/deployer/shop/current/public;
  expires max;
  break;
}
sábado, 13 de novembro de 2010
Ligue a compressão
GZIP do seu proxy
sábado, 13 de novembro de 2010
Nginx config
gzip on;
gzip_http_version 1.0;
gzip_proxied any;
gzip_min_length 500;
gzip_disable "MSIE [1-6].";
gzip_types text/html text/xml text/
javascript;
sábado, 13 de novembro de 2010
Coloque o seu CSS no
início da página
Assim o IEca não fica fazendo pantim na hora de
mostrar o HTML
sábado, 13 de novembro de 2010
Use CSS sprites
sábado, 13 de novembro de 2010
No CSS
<div	
  style="background-­‐image:	
  url
('a_lot_of_sprites.gif');
	
  	
  	
  	
  background-­‐position:	
  -­‐260px	
  -­‐90px;
	
  	
  	
  	
  width:	
  26px;	
  height:	
  24px;">
</div>
sábado, 13 de novembro de 2010
Contrate uma CDN pra
servir conteúdo estático
e de usuários
CDN == Content Delivery Network
S3 pra todos nós que somos pobres
sábado, 13 de novembro de 2010
Junte todos os CSS e
JavaScripts em um único
arquivo
:cache => “todos_os_estilos”
faz isso pra você no Rails
sábado, 13 de novembro de 2010
Faça crushing dos seus
PNGs
pngcrush for the win
sábado, 13 de novembro de 2010
Use hosts separados pra
servir conteúdo estático
assets1.meusite.com.br
assets2.meusite.com.br
assets3.meusite.com.br
assets4.meusite.com.br
sábado, 13 de novembro de 2010
Remova os metadados de
JPEGs
convert -strip source.jpeg destination.jpeg
ImageMagick
sábado, 13 de novembro de 2010
Otimizações de
JavaScript
sábado, 13 de novembro de 2010
Coloque Scripts no FIM
da página
sábado, 13 de novembro de 2010
Faça o download de
scripts de forma
assíncrona
document.write(“<script src=‘something.js’>”)
XHR fazendo eval no script
dom.createElement( “script” )
sábado, 13 de novembro de 2010
Faça a minificação dos
seus scripts
YUI Compressor
JSMIN
JS Minifier
sábado, 13 de novembro de 2010
Quebre os scripts da
primeira página em 2
beforeOnload.js
afterOnload.js
sábado, 13 de novembro de 2010
Use requisições Ajax
para navegar no seu site
Twitter.com? Alguém?
sábado, 13 de novembro de 2010
Dúvidas?
É nóis que vôa, bruxão!
sábado, 13 de novembro de 2010

Weitere ähnliche Inhalte

Was ist angesagt?

Ruby no tucupi e Rails com farinha
Ruby no tucupi e Rails com farinhaRuby no tucupi e Rails com farinha
Ruby no tucupi e Rails com farinhas4nx
 
Configurando SSL com Let’s Encrypt, Easy Engine e WP-CLI
Configurando SSL com Let’s Encrypt, Easy Engine e WP-CLIConfigurando SSL com Let’s Encrypt, Easy Engine e WP-CLI
Configurando SSL com Let’s Encrypt, Easy Engine e WP-CLIRafael Funchal
 
Elastic Meetup Florianópolis - Apresentação Thiago Diniz
Elastic Meetup Florianópolis - Apresentação Thiago DinizElastic Meetup Florianópolis - Apresentação Thiago Diniz
Elastic Meetup Florianópolis - Apresentação Thiago DinizThiago Murilo Diniz
 
Rafael Funchal - Configurando SSL com Let’s Encrypt, EasyEngine e WP-CLI
Rafael Funchal - Configurando SSL com Let’s Encrypt, EasyEngine e WP-CLIRafael Funchal - Configurando SSL com Let’s Encrypt, EasyEngine e WP-CLI
Rafael Funchal - Configurando SSL com Let’s Encrypt, EasyEngine e WP-CLIWordPress Floripa
 
WordCamp Floripa 2018: Configurando SSL com Let’s Encrypt, Easy Engine e WP-CLI
WordCamp Floripa 2018: Configurando SSL com Let’s Encrypt, Easy Engine e WP-CLIWordCamp Floripa 2018: Configurando SSL com Let’s Encrypt, Easy Engine e WP-CLI
WordCamp Floripa 2018: Configurando SSL com Let’s Encrypt, Easy Engine e WP-CLIRafael Funchal
 
Um milhao tdc2014sp Apresentação por Fernando Ike
Um milhao tdc2014sp Apresentação por Fernando IkeUm milhao tdc2014sp Apresentação por Fernando Ike
Um milhao tdc2014sp Apresentação por Fernando IkePaulo Fernandes
 
IIS - Uma questão de arquitetura
IIS - Uma questão de arquiteturaIIS - Uma questão de arquitetura
IIS - Uma questão de arquiteturasidneyfilho
 
Ajax (Asynchronous Javascript And Xml)
Ajax (Asynchronous Javascript And Xml)Ajax (Asynchronous Javascript And Xml)
Ajax (Asynchronous Javascript And Xml)kidh0
 
Por que devemos usar site responsivo.
Por que devemos usar site responsivo. Por que devemos usar site responsivo.
Por que devemos usar site responsivo. Cristina Luz
 
Estudo de caso do "O Curioso" (Rio on Rails)
Estudo de caso do "O Curioso" (Rio on Rails)Estudo de caso do "O Curioso" (Rio on Rails)
Estudo de caso do "O Curioso" (Rio on Rails)guestf4f70f
 
Node.JS - Workshop do básico ao avançado
Node.JS - Workshop do básico ao avançadoNode.JS - Workshop do básico ao avançado
Node.JS - Workshop do básico ao avançadoEduardo Bohrer
 
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
 

Was ist angesagt? (20)

Introducao rubyonrails
Introducao rubyonrailsIntroducao rubyonrails
Introducao rubyonrails
 
Rest workshop
Rest workshopRest workshop
Rest workshop
 
Ruby no tucupi e Rails com farinha
Ruby no tucupi e Rails com farinhaRuby no tucupi e Rails com farinha
Ruby no tucupi e Rails com farinha
 
Python async
Python asyncPython async
Python async
 
Configurando SSL com Let’s Encrypt, Easy Engine e WP-CLI
Configurando SSL com Let’s Encrypt, Easy Engine e WP-CLIConfigurando SSL com Let’s Encrypt, Easy Engine e WP-CLI
Configurando SSL com Let’s Encrypt, Easy Engine e WP-CLI
 
Php WatchDog
Php WatchDogPhp WatchDog
Php WatchDog
 
Elastic Meetup Florianópolis - Apresentação Thiago Diniz
Elastic Meetup Florianópolis - Apresentação Thiago DinizElastic Meetup Florianópolis - Apresentação Thiago Diniz
Elastic Meetup Florianópolis - Apresentação Thiago Diniz
 
Rafael Funchal - Configurando SSL com Let’s Encrypt, EasyEngine e WP-CLI
Rafael Funchal - Configurando SSL com Let’s Encrypt, EasyEngine e WP-CLIRafael Funchal - Configurando SSL com Let’s Encrypt, EasyEngine e WP-CLI
Rafael Funchal - Configurando SSL com Let’s Encrypt, EasyEngine e WP-CLI
 
WordCamp Floripa 2018: Configurando SSL com Let’s Encrypt, Easy Engine e WP-CLI
WordCamp Floripa 2018: Configurando SSL com Let’s Encrypt, Easy Engine e WP-CLIWordCamp Floripa 2018: Configurando SSL com Let’s Encrypt, Easy Engine e WP-CLI
WordCamp Floripa 2018: Configurando SSL com Let’s Encrypt, Easy Engine e WP-CLI
 
Um milhao tdc2014sp Apresentação por Fernando Ike
Um milhao tdc2014sp Apresentação por Fernando IkeUm milhao tdc2014sp Apresentação por Fernando Ike
Um milhao tdc2014sp Apresentação por Fernando Ike
 
IIS - Uma questão de arquitetura
IIS - Uma questão de arquiteturaIIS - Uma questão de arquitetura
IIS - Uma questão de arquitetura
 
Performance Web com ASP.NET MVC
Performance Web com ASP.NET MVCPerformance Web com ASP.NET MVC
Performance Web com ASP.NET MVC
 
WordPress MU
WordPress MUWordPress MU
WordPress MU
 
Ajax (Asynchronous Javascript And Xml)
Ajax (Asynchronous Javascript And Xml)Ajax (Asynchronous Javascript And Xml)
Ajax (Asynchronous Javascript And Xml)
 
Por que devemos usar site responsivo.
Por que devemos usar site responsivo. Por que devemos usar site responsivo.
Por que devemos usar site responsivo.
 
Estudo de caso do "O Curioso" (Rio on Rails)
Estudo de caso do "O Curioso" (Rio on Rails)Estudo de caso do "O Curioso" (Rio on Rails)
Estudo de caso do "O Curioso" (Rio on Rails)
 
Web seminario hardening
Web seminario hardeningWeb seminario hardening
Web seminario hardening
 
Node.JS - Workshop do básico ao avançado
Node.JS - Workshop do básico ao avançadoNode.JS - Workshop do básico ao avançado
Node.JS - Workshop do básico ao avançado
 
Sinatra
SinatraSinatra
Sinatra
 
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
 

Andere mochten auch

Criação de uma equipe de QAs, do Waterfall ao Agile
Criação de uma equipe de QAs, do Waterfall ao AgileCriação de uma equipe de QAs, do Waterfall ao Agile
Criação de uma equipe de QAs, do Waterfall ao AgileRobson Agapito Correa
 
QA Automation Battle: Java vs Python vs Ruby [09.04.2015]
QA Automation Battle: Java vs Python vs Ruby [09.04.2015]QA Automation Battle: Java vs Python vs Ruby [09.04.2015]
QA Automation Battle: Java vs Python vs Ruby [09.04.2015]GoIT
 
Jruby, o melhor de 2 mundos (MacGyver + ChuckNorris)
Jruby, o melhor de 2 mundos (MacGyver + ChuckNorris)Jruby, o melhor de 2 mundos (MacGyver + ChuckNorris)
Jruby, o melhor de 2 mundos (MacGyver + ChuckNorris)Marcio Sfalsin
 
[38º GURU SP] Automação de Testes Web em Ruby com Cucumber e Webdriver
[38º GURU SP] Automação de Testes Web em Ruby com Cucumber e Webdriver[38º GURU SP] Automação de Testes Web em Ruby com Cucumber e Webdriver
[38º GURU SP] Automação de Testes Web em Ruby com Cucumber e WebdriverJúlio de Lima
 
Ruby vs Java
Ruby vs JavaRuby vs Java
Ruby vs JavaBelighted
 
Ruby For Java Programmers
Ruby For Java ProgrammersRuby For Java Programmers
Ruby For Java ProgrammersMike Bowler
 
Ruby for Java Developers
Ruby for Java DevelopersRuby for Java Developers
Ruby for Java DevelopersRobert Reiz
 

Andere mochten auch (9)

Apresentação sobre JRuby
Apresentação sobre JRubyApresentação sobre JRuby
Apresentação sobre JRuby
 
Criação de uma equipe de QAs, do Waterfall ao Agile
Criação de uma equipe de QAs, do Waterfall ao AgileCriação de uma equipe de QAs, do Waterfall ao Agile
Criação de uma equipe de QAs, do Waterfall ao Agile
 
QA Automation Battle: Java vs Python vs Ruby [09.04.2015]
QA Automation Battle: Java vs Python vs Ruby [09.04.2015]QA Automation Battle: Java vs Python vs Ruby [09.04.2015]
QA Automation Battle: Java vs Python vs Ruby [09.04.2015]
 
Jruby, o melhor de 2 mundos (MacGyver + ChuckNorris)
Jruby, o melhor de 2 mundos (MacGyver + ChuckNorris)Jruby, o melhor de 2 mundos (MacGyver + ChuckNorris)
Jruby, o melhor de 2 mundos (MacGyver + ChuckNorris)
 
[38º GURU SP] Automação de Testes Web em Ruby com Cucumber e Webdriver
[38º GURU SP] Automação de Testes Web em Ruby com Cucumber e Webdriver[38º GURU SP] Automação de Testes Web em Ruby com Cucumber e Webdriver
[38º GURU SP] Automação de Testes Web em Ruby com Cucumber e Webdriver
 
Ruby vs Java
Ruby vs JavaRuby vs Java
Ruby vs Java
 
Ruby For Java Programmers
Ruby For Java ProgrammersRuby For Java Programmers
Ruby For Java Programmers
 
Java vs. Ruby
Java vs. RubyJava vs. Ruby
Java vs. Ruby
 
Ruby for Java Developers
Ruby for Java DevelopersRuby for Java Developers
Ruby for Java Developers
 

Ähnlich wie Site otimizações rápido

Oficina de infraestrutura como código (apresentando o Puppet)
Oficina de infraestrutura como código (apresentando o Puppet)Oficina de infraestrutura como código (apresentando o Puppet)
Oficina de infraestrutura como código (apresentando o Puppet)Jose Augusto Carvalho
 
Ferramentas para infraestrutura ágil
Ferramentas para infraestrutura ágilFerramentas para infraestrutura ágil
Ferramentas para infraestrutura ágilJose Augusto Carvalho
 
Desenvolvimento web em java com JSP e Servlets
Desenvolvimento web em java com JSP e ServletsDesenvolvimento web em java com JSP e Servlets
Desenvolvimento web em java com JSP e ServletsIgo Coelho
 
Ao infinito e além com PHP memcached e Gearman
Ao infinito e além com PHP memcached e GearmanAo infinito e além com PHP memcached e Gearman
Ao infinito e além com PHP memcached e GearmanElton Minetto
 
Nadando em Dinheiro com jQuery
Nadando em Dinheiro com jQueryNadando em Dinheiro com jQuery
Nadando em Dinheiro com jQueryReinaldo Junior
 
1,2,3 live! fronted optimizations @ guru sc - 2011.10.01
1,2,3 live! fronted optimizations @ guru sc - 2011.10.011,2,3 live! fronted optimizations @ guru sc - 2011.10.01
1,2,3 live! fronted optimizations @ guru sc - 2011.10.01Carlos Antonio da Silva
 
Desenvolvimento orientado à introspecção
Desenvolvimento orientado à introspecçãoDesenvolvimento orientado à introspecção
Desenvolvimento orientado à introspecçãoSuccesSoft LTDA
 
Infraestrutura como código com Puppet e Mcollective
Infraestrutura como código com Puppet e McollectiveInfraestrutura como código com Puppet e Mcollective
Infraestrutura como código com Puppet e McollectiveJose Augusto Carvalho
 
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
 
PHP Papa-Léguas: Performance em PHP
PHP Papa-Léguas: Performance em PHPPHP Papa-Léguas: Performance em PHP
PHP Papa-Léguas: Performance em PHPFlávio Lisboa
 
IaaS: Implantação e gerenciamento de configurações de ambientes Cloud usando...
 IaaS: Implantação e gerenciamento de configurações de ambientes Cloud usando... IaaS: Implantação e gerenciamento de configurações de ambientes Cloud usando...
IaaS: Implantação e gerenciamento de configurações de ambientes Cloud usando...Diego Santos
 
PHP, Gearman e Memcache
PHP, Gearman e MemcachePHP, Gearman e Memcache
PHP, Gearman e MemcacheAndre Golvea
 
TDC2017 | São Paulo - Trilha Programação Funcional How we figured out we had ...
TDC2017 | São Paulo - Trilha Programação Funcional How we figured out we had ...TDC2017 | São Paulo - Trilha Programação Funcional How we figured out we had ...
TDC2017 | São Paulo - Trilha Programação Funcional How we figured out we had ...tdc-globalcode
 
Flex + Grails @ Flexmania2010
Flex + Grails @ Flexmania2010Flex + Grails @ Flexmania2010
Flex + Grails @ Flexmania2010João Zaratine
 
iOS, APIs e sincronização de dados
iOS, APIs e sincronização de dadosiOS, APIs e sincronização de dados
iOS, APIs e sincronização de dadosMaurício Linhares
 
Mantendo os dados do seu app web offline com PouchDB
Mantendo os dados do seu app web offline com PouchDBMantendo os dados do seu app web offline com PouchDB
Mantendo os dados do seu app web offline com PouchDBSidney Roberto
 

Ähnlich wie Site otimizações rápido (20)

Oficina de infraestrutura como código (apresentando o Puppet)
Oficina de infraestrutura como código (apresentando o Puppet)Oficina de infraestrutura como código (apresentando o Puppet)
Oficina de infraestrutura como código (apresentando o Puppet)
 
Fabric
FabricFabric
Fabric
 
Ferramentas para infraestrutura ágil
Ferramentas para infraestrutura ágilFerramentas para infraestrutura ágil
Ferramentas para infraestrutura ágil
 
Desenvolvimento web em java com JSP e Servlets
Desenvolvimento web em java com JSP e ServletsDesenvolvimento web em java com JSP e Servlets
Desenvolvimento web em java com JSP e Servlets
 
Ao infinito e além com PHP memcached e Gearman
Ao infinito e além com PHP memcached e GearmanAo infinito e além com PHP memcached e Gearman
Ao infinito e além com PHP memcached e Gearman
 
Keynote por dentro do bootstrap
Keynote   por dentro do bootstrapKeynote   por dentro do bootstrap
Keynote por dentro do bootstrap
 
Nadando em Dinheiro com jQuery
Nadando em Dinheiro com jQueryNadando em Dinheiro com jQuery
Nadando em Dinheiro com jQuery
 
Php do Jeito Certo
Php do Jeito CertoPhp do Jeito Certo
Php do Jeito Certo
 
1,2,3 live! fronted optimizations @ guru sc - 2011.10.01
1,2,3 live! fronted optimizations @ guru sc - 2011.10.011,2,3 live! fronted optimizations @ guru sc - 2011.10.01
1,2,3 live! fronted optimizations @ guru sc - 2011.10.01
 
Desenvolvimento orientado à introspecção
Desenvolvimento orientado à introspecçãoDesenvolvimento orientado à introspecção
Desenvolvimento orientado à introspecção
 
Infraestrutura como código com Puppet e Mcollective
Infraestrutura como código com Puppet e McollectiveInfraestrutura como código com Puppet e Mcollective
Infraestrutura como código com Puppet e Mcollective
 
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.
 
PHP Papa-Léguas: Performance em PHP
PHP Papa-Léguas: Performance em PHPPHP Papa-Léguas: Performance em PHP
PHP Papa-Léguas: Performance em PHP
 
IaaS: Implantação e gerenciamento de configurações de ambientes Cloud usando...
 IaaS: Implantação e gerenciamento de configurações de ambientes Cloud usando... IaaS: Implantação e gerenciamento de configurações de ambientes Cloud usando...
IaaS: Implantação e gerenciamento de configurações de ambientes Cloud usando...
 
PHP, Gearman e Memcache
PHP, Gearman e MemcachePHP, Gearman e Memcache
PHP, Gearman e Memcache
 
TDC2017 | São Paulo - Trilha Programação Funcional How we figured out we had ...
TDC2017 | São Paulo - Trilha Programação Funcional How we figured out we had ...TDC2017 | São Paulo - Trilha Programação Funcional How we figured out we had ...
TDC2017 | São Paulo - Trilha Programação Funcional How we figured out we had ...
 
Flex + Grails @ Flexmania2010
Flex + Grails @ Flexmania2010Flex + Grails @ Flexmania2010
Flex + Grails @ Flexmania2010
 
iOS, APIs e sincronização de dados
iOS, APIs e sincronização de dadosiOS, APIs e sincronização de dados
iOS, APIs e sincronização de dados
 
Mantendo os dados do seu app web offline com PouchDB
Mantendo os dados do seu app web offline com PouchDBMantendo os dados do seu app web offline com PouchDB
Mantendo os dados do seu app web offline com PouchDB
 
WordPress na Amazon AWS - Cloud36
WordPress na Amazon AWS - Cloud36WordPress na Amazon AWS - Cloud36
WordPress na Amazon AWS - Cloud36
 

Mehr von Maurício Linhares

Unindo Ruby e Java através de uma arquitetura orientada a serviços na OfficeDrop
Unindo Ruby e Java através de uma arquitetura orientada a serviços na OfficeDropUnindo Ruby e Java através de uma arquitetura orientada a serviços na OfficeDrop
Unindo Ruby e Java através de uma arquitetura orientada a serviços na OfficeDropMaurício Linhares
 
Mixing Ruby and Java in a Service Oriented Architecture at OfficeDrop
Mixing Ruby and Java in a Service Oriented Architecture at OfficeDropMixing Ruby and Java in a Service Oriented Architecture at OfficeDrop
Mixing Ruby and Java in a Service Oriented Architecture at OfficeDropMaurício Linhares
 
Curso java 08 - mais sobre coleções
Curso java   08 - mais sobre coleçõesCurso java   08 - mais sobre coleções
Curso java 08 - mais sobre coleçõesMaurício Linhares
 
Curso java 06 - mais construtores, interfaces e polimorfismo
Curso java   06 - mais construtores, interfaces e polimorfismoCurso java   06 - mais construtores, interfaces e polimorfismo
Curso java 06 - mais construtores, interfaces e polimorfismoMaurício Linhares
 
Curso java 05 - herança, classes e métodos abstratos
Curso java   05 - herança, classes e métodos abstratosCurso java   05 - herança, classes e métodos abstratos
Curso java 05 - herança, classes e métodos abstratosMaurício Linhares
 
Curso java 04 - ap is e bibliotecas
Curso java   04 - ap is e bibliotecasCurso java   04 - ap is e bibliotecas
Curso java 04 - ap is e bibliotecasMaurício Linhares
 
Curso java 01 - molhando os pés com java
Curso java   01 - molhando os pés com javaCurso java   01 - molhando os pés com java
Curso java 01 - molhando os pés com javaMaurício Linhares
 
Curso java 03 - métodos e parâmetros
Curso java   03 - métodos e parâmetrosCurso java   03 - métodos e parâmetros
Curso java 03 - métodos e parâmetrosMaurício Linhares
 
Outsourcing e trabalho remoto para a nuvem
Outsourcing e trabalho remoto para a nuvemOutsourcing e trabalho remoto para a nuvem
Outsourcing e trabalho remoto para a nuvemMaurício Linhares
 
Aulas de Java Avançado 2- Faculdade iDez 2010
Aulas de Java Avançado 2- Faculdade iDez 2010Aulas de Java Avançado 2- Faculdade iDez 2010
Aulas de Java Avançado 2- Faculdade iDez 2010Maurício Linhares
 

Mehr von Maurício Linhares (20)

Mercado de TI
Mercado de TIMercado de TI
Mercado de TI
 
Unindo Ruby e Java através de uma arquitetura orientada a serviços na OfficeDrop
Unindo Ruby e Java através de uma arquitetura orientada a serviços na OfficeDropUnindo Ruby e Java através de uma arquitetura orientada a serviços na OfficeDrop
Unindo Ruby e Java através de uma arquitetura orientada a serviços na OfficeDrop
 
Mixing Ruby and Java in a Service Oriented Architecture at OfficeDrop
Mixing Ruby and Java in a Service Oriented Architecture at OfficeDropMixing Ruby and Java in a Service Oriented Architecture at OfficeDrop
Mixing Ruby and Java in a Service Oriented Architecture at OfficeDrop
 
Aprendendo ruby
Aprendendo rubyAprendendo ruby
Aprendendo ruby
 
Curso java 07 - exceções
Curso java   07 - exceçõesCurso java   07 - exceções
Curso java 07 - exceções
 
Curso java 08 - mais sobre coleções
Curso java   08 - mais sobre coleçõesCurso java   08 - mais sobre coleções
Curso java 08 - mais sobre coleções
 
Curso java 06 - mais construtores, interfaces e polimorfismo
Curso java   06 - mais construtores, interfaces e polimorfismoCurso java   06 - mais construtores, interfaces e polimorfismo
Curso java 06 - mais construtores, interfaces e polimorfismo
 
Curso java 05 - herança, classes e métodos abstratos
Curso java   05 - herança, classes e métodos abstratosCurso java   05 - herança, classes e métodos abstratos
Curso java 05 - herança, classes e métodos abstratos
 
Curso java 04 - ap is e bibliotecas
Curso java   04 - ap is e bibliotecasCurso java   04 - ap is e bibliotecas
Curso java 04 - ap is e bibliotecas
 
Curso java 01 - molhando os pés com java
Curso java   01 - molhando os pés com javaCurso java   01 - molhando os pés com java
Curso java 01 - molhando os pés com java
 
Curso java 02 - variáveis
Curso java   02 - variáveisCurso java   02 - variáveis
Curso java 02 - variáveis
 
Curso java 03 - métodos e parâmetros
Curso java   03 - métodos e parâmetrosCurso java   03 - métodos e parâmetros
Curso java 03 - métodos e parâmetros
 
Extreme programming
Extreme programmingExtreme programming
Extreme programming
 
Feature Driven Development
Feature Driven DevelopmentFeature Driven Development
Feature Driven Development
 
Migrando pra Scala
Migrando pra ScalaMigrando pra Scala
Migrando pra Scala
 
Outsourcing e trabalho remoto para a nuvem
Outsourcing e trabalho remoto para a nuvemOutsourcing e trabalho remoto para a nuvem
Outsourcing e trabalho remoto para a nuvem
 
Mercado hoje
Mercado hojeMercado hoje
Mercado hoje
 
Análise de sistemas oo 1
Análise de sistemas oo   1Análise de sistemas oo   1
Análise de sistemas oo 1
 
Revisão html e java script
Revisão html e java scriptRevisão html e java script
Revisão html e java script
 
Aulas de Java Avançado 2- Faculdade iDez 2010
Aulas de Java Avançado 2- Faculdade iDez 2010Aulas de Java Avançado 2- Faculdade iDez 2010
Aulas de Java Avançado 2- Faculdade iDez 2010
 

Site otimizações rápido

  • 1. Seu site voando Maurício Linhares - @mauriciojr sábado, 13 de novembro de 2010
  • 2. Quem? Java, Ruby, Objective-C, whatever Developer da OfficeDrop.com Agile Coach que escreve código Finge que é músico jogando Rock band sábado, 13 de novembro de 2010
  • 3. Onde? sábado, 13 de novembro de 2010
  • 4. Aprenda a respeitar o protocolo HTTP Ler o RFC ajuda sábado, 13 de novembro de 2010
  • 5. GET é PEGAR uma CÓPIA, macho Dicionário: não cause alteraçoes no seu BANCO, mané sábado, 13 de novembro de 2010
  • 6. Quando usar GET? Visualizar informaçoes Buscar informaçoes (usuários devem ser capazes de fazer bookmarking) Análise de tráfego (Analytics? Alguém?) sábado, 13 de novembro de 2010
  • 7. POST é MANDAR um mói de coisa, abestado E isso pode causar mudanças no seu BANCO sábado, 13 de novembro de 2010
  • 8. Princípio da idempotência Vários GETs == mesmo resultado Vários POSTs == várias linhas no banco sábado, 13 de novembro de 2010
  • 9. Google Web Accelerator Uma história épica e dramática em um único capítulo, no seu Netscape mais próximo sábado, 13 de novembro de 2010
  • 10. Otimizações de front- end Mais fácil do que achar um cearense que não sabe contar piada sábado, 13 de novembro de 2010
  • 11. Use um proxy-server pra servir o seu conteúdo Nginx, por favor !"#$%& !"#$%&' (' !"#$%&'' )' !"#$%&'' *' sábado, 13 de novembro de 2010
  • 12. Defina cabeçalhos de expires pra todo o conteúdo estático em um futuro muito distante sábado, 13 de novembro de 2010
  • 13. Problemas? Se você atualizar o arquivo, o browser não vai ver É necessário renomear os arquivos ou mudar a chamada pra eles /javascripts/jquery.js?12398766 sábado, 13 de novembro de 2010
  • 14. Nginx config location ~ ^/(images|javascripts|stylesheets)/ { root /home/deployer/shop/current/public;   expires max;   break; } sábado, 13 de novembro de 2010
  • 15. Ligue a compressão GZIP do seu proxy sábado, 13 de novembro de 2010
  • 16. Nginx config gzip on; gzip_http_version 1.0; gzip_proxied any; gzip_min_length 500; gzip_disable "MSIE [1-6]."; gzip_types text/html text/xml text/ javascript; sábado, 13 de novembro de 2010
  • 17. Coloque o seu CSS no início da página Assim o IEca não fica fazendo pantim na hora de mostrar o HTML sábado, 13 de novembro de 2010
  • 18. Use CSS sprites sábado, 13 de novembro de 2010
  • 19. No CSS <div  style="background-­‐image:  url ('a_lot_of_sprites.gif');        background-­‐position:  -­‐260px  -­‐90px;        width:  26px;  height:  24px;"> </div> sábado, 13 de novembro de 2010
  • 20. Contrate uma CDN pra servir conteúdo estático e de usuários CDN == Content Delivery Network S3 pra todos nós que somos pobres sábado, 13 de novembro de 2010
  • 21. Junte todos os CSS e JavaScripts em um único arquivo :cache => “todos_os_estilos” faz isso pra você no Rails sábado, 13 de novembro de 2010
  • 22. Faça crushing dos seus PNGs pngcrush for the win sábado, 13 de novembro de 2010
  • 23. Use hosts separados pra servir conteúdo estático assets1.meusite.com.br assets2.meusite.com.br assets3.meusite.com.br assets4.meusite.com.br sábado, 13 de novembro de 2010
  • 24. Remova os metadados de JPEGs convert -strip source.jpeg destination.jpeg ImageMagick sábado, 13 de novembro de 2010
  • 26. Coloque Scripts no FIM da página sábado, 13 de novembro de 2010
  • 27. Faça o download de scripts de forma assíncrona document.write(“<script src=‘something.js’>”) XHR fazendo eval no script dom.createElement( “script” ) sábado, 13 de novembro de 2010
  • 28. Faça a minificação dos seus scripts YUI Compressor JSMIN JS Minifier sábado, 13 de novembro de 2010
  • 29. Quebre os scripts da primeira página em 2 beforeOnload.js afterOnload.js sábado, 13 de novembro de 2010
  • 30. Use requisições Ajax para navegar no seu site Twitter.com? Alguém? sábado, 13 de novembro de 2010
  • 31. Dúvidas? É nóis que vôa, bruxão! sábado, 13 de novembro de 2010