SlideShare una empresa de Scribd logo
1 de 66
Como se tornar um
viciado em performance
em 5 passos
Pedro Chaves - 3º PHPMG Talks
O primeiro motivo

Ninguém elogia um site
rápido, mas todos reclamam
de um site lento.
Tempo de atraso   Reação do usuário
0 - 100ms         Instantânea
100 - 300ms       Atraso perceptível
300 - 1000ms      Computador trabalhando...
1s+               Começa a perder o foco
10s+              Eu volto depois...
100ms por
  página


 1% de
 receita
Tempo de
 disparo de
  onLoad




15% tempo de
 permanência
O quarto motivo

Seu site nunca será
rápido o suficiente
sozinho.
O quinto motivo

Melhorar a
performance é uma via
de mão dupla.
Onde você busca seus
      dados?


#1
O MySQL é o lugar mais
lento para buscar seus
        dados.
Seus novos melhores
amigos




Que tal salvar os dados em lugares alternativos?
Seus novos melhores
amigos




Redis salva em memória RAM ou em disco
Se dados não mudam
toda hora, não precisa
  buscá-los toda hora
Rotina toda              Se não existe busca
     madrugada                    do arquivo




  Salva um arquivo
 JSON no disco e um              Site busca do
     registro no                 Memcached
    Memcached




Crontab é seu melhor amigo!
Seus novos melhores
amigos




Memcached + arquivo em disco gerado por rotina
Como sua aplicação
     processa os dados?


#2
A qualidade do seu código
interfere na velocidade da
      sua aplicação.
The KISS principle

Nem sempre o código mais
bonito é o mais rápido ou
eficiente.
The KISS principle
KEEP
  IT
SIMPLE
STUPID
APC - Alternative
            PHP Cache


Dicas rápidas - Habilite APC
__autoload não!
                               (confirmado pelo próprio Rasmus)




Dicas rápidas - Habilite APC
Dicas rápidas - Passe parâmetros por referência
Dicas rápidas - Utilize funções nativas
Dicas rápidas - Junte técnicas
The KISS principle

As vezes é necessário abrir
mão de conceitos de
engenharia de software em
troca de performance.
SELECT COUNT(*), a.nome AS nome_artista
FROM artistas AS a
INNER JOIN musicas AS m ON m.id_artista = a.id
WHERE m.id_artista = ?
GROUP BY m.id_artista



Dicas rápidas de performance
SELECT nome, num_musicas
FROM artistas
WHERE id_artista = ?


Dicas rápidas de performance
Quando sua aplicação
 processa os dados?


#3
Você realmente precisa
executar seu código toda
         hora?
Que tal colocar uma camada de
cache no retorno de todas as
requisições?



Checkpoint #3
Varnish, seu melhor amigo
O protocolo HTTP está aí para ser
utilizado da maneira correta!
                                Porque nosso navegador também faz
                                cache por nós :D




Protocolo HTTP to the rescue!
Last-Modified + If-
Modified-Since

 O servidor só envia o conteúdo da página
 se If-Modified-Since não for enviado ou
     for menor do que Last-Modified.


      304 Not Modified
Expires

    Não busca a página no servidor se o
    tempo do cache não tiver expirado


Expires: Sun, 17-Jan-2038 19:14:07 GMT
ETag + If-None-Match

    "Versão" daquela requisição.
   Pode conter qualquer conteúdo,
         escolhido por você.


           ETag: JSV1
Quanto menos
       melhor!


#4
A requisição mais
rápida é aquela que
    não existe.
Checklist
● Só um arquivo CSS ✓
A primeira impressão
     é a que fica.
Checklist
● Só um arquivo CSS ✓
● JavaScript no rodapé ✓
Checklist
● Só um arquivo CSS ✓
● JavaScript no rodapé ✓
● Poucos arquivos JavaScript ✓
Google Closure
                    YUI Compressor
  Compiler



      Minificar JavaScript e
               CSS!



   UglifyJS             CSSMin
Checklist
●   Só um arquivo CSS ✓
●   JavaScript no rodapé ✓
●   Poucos arquivos JavaScript ✓
●   Minificar JS / CSS ✓
$LAB.js             head.js


     Dois JavaScript não
   carregam juntos. A não
    ser que você queira...



RequireJS            YepNope
Checklist
●   Só um arquivo CSS ✓
●   JavaScript no rodapé ✓
●   Poucos arquivos JavaScript ✓
●   Minificar JS / CSS ✓
●   JavaScript assíncrono ✓
Cookies são inúteis
  para arquivos
    estáticos.
Checklist
●   Só um arquivo CSS ✓
●   JavaScript no rodapé ✓
●   Poucos arquivos JavaScript ✓
●   Minificar JS / CSS ✓
●   JavaScript assíncrono ✓
●   Content Delivery Network ✓
gzip!
 até 80% do tamanho da requisição :D
Checklist
●   Só um arquivo CSS ✓
●   JavaScript no rodapé ✓
●   Poucos arquivos JavaScript ✓
●   Minificar JS / CSS ✓
●   JavaScript assíncrono ✓
●   Content Delivery Network ✓
●   gzip ✓
Otimize TODAS as
    imagens!
         jpegoptim faz isso por você ;)
base64 === -1 hit
Checklist
●   Só um arquivo CSS ✓
●   JavaScript no rodapé ✓
●   Poucos arquivos JavaScript ✓
●   Minificar JS / CSS ✓
●   JavaScript assíncrono ✓
●   Content Delivery Network ✓
●   gzip ✓
●   Imagens otimizadas ✓
Checklist
●   Só um arquivo CSS ✓
●   JavaScript no rodapé ✓
●   Poucos arquivos JavaScript ✓
●   Minificar JS / CSS ✓
●   JavaScript assíncrono ✓
●   Content Delivery Network ✓
●   gzip ✓
●   Imagens otimizadas ✓
●   CSS Sprites ✓
Dicas finais


#5
"Existem duas coisas
difíceis em TI: dar nome às
 coisas e invalidar cache"
                     Alguém muito sábio
Cache incremental
         vs.
Refazer todo o cache
         vs.
   Excluir o cache
PHP não possui um
paradigma só. Se aproveite
          disso.
Teste sua performance!
PageSpeed e YSlow podem
        te ajudar.
Obrigado!

Más contenido relacionado

La actualidad más candente

T03_LM3: Javascript (2013-2014)
T03_LM3: Javascript (2013-2014)T03_LM3: Javascript (2013-2014)
T03_LM3: Javascript (2013-2014)Carlos Santos
 
Xen e CoreOS: solução para data mining com NodeJS e ElasticSearch
Xen e CoreOS: solução para data mining com NodeJS e ElasticSearchXen e CoreOS: solução para data mining com NodeJS e ElasticSearch
Xen e CoreOS: solução para data mining com NodeJS e ElasticSearchBernardo Donadio
 
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
 
Frontend (RailsMG)
Frontend (RailsMG)Frontend (RailsMG)
Frontend (RailsMG)Daniel Lopes
 
LAMP: Desenvolvendo além do trivial
LAMP: Desenvolvendo além do trivialLAMP: Desenvolvendo além do trivial
LAMP: Desenvolvendo além do trivialGabriela Ferrara
 
Mean Stack - Aplicações Web Modernas com MEAN
Mean Stack - Aplicações Web Modernas com MEANMean Stack - Aplicações Web Modernas com MEAN
Mean Stack - Aplicações Web Modernas com MEANJoão Gabriel Lima
 
MEAN Full Stack JavaScript - TaSafoConf 2015
MEAN Full Stack JavaScript - TaSafoConf 2015MEAN Full Stack JavaScript - TaSafoConf 2015
MEAN Full Stack JavaScript - TaSafoConf 2015Kaio Valente
 
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
 
Node.js: 5 razões para começar a utilizar
Node.js: 5 razões para começar a utilizarNode.js: 5 razões para começar a utilizar
Node.js: 5 razões para começar a utilizarFilipe Falcão
 
Nodejs - A performance que eu sempre quis ter
Nodejs - A performance que eu sempre quis terNodejs - A performance que eu sempre quis ter
Nodejs - A performance que eu sempre quis terEmerson Macedo
 
Uma visão rápida sobre Nodejs
Uma visão rápida sobre NodejsUma visão rápida sobre Nodejs
Uma visão rápida sobre NodejsRafael Soares
 
NGiNX, o motor da sua aplicação web
NGiNX, o motor da sua aplicação webNGiNX, o motor da sua aplicação web
NGiNX, o motor da sua aplicação webernaniaz
 
Torne seu Site Mais Veloz! I GDG Women Sorocaba
Torne seu Site Mais Veloz! I GDG Women SorocabaTorne seu Site Mais Veloz! I GDG Women Sorocaba
Torne seu Site Mais Veloz! I GDG Women SorocabaNatascha Hun
 
Descobrindo o Nginx - Um servidor web de alta performance
Descobrindo o Nginx - Um servidor web de alta performanceDescobrindo o Nginx - Um servidor web de alta performance
Descobrindo o Nginx - Um servidor web de alta performanceGustavo Ciello
 
NoSQL na nuvem com o Azure Cosmos DB - MVPConf 2018
NoSQL na nuvem com o Azure Cosmos DB - MVPConf 2018NoSQL na nuvem com o Azure Cosmos DB - MVPConf 2018
NoSQL na nuvem com o Azure Cosmos DB - MVPConf 2018Renato Groff
 

La actualidad más candente (20)

T03_LM3: Javascript (2013-2014)
T03_LM3: Javascript (2013-2014)T03_LM3: Javascript (2013-2014)
T03_LM3: Javascript (2013-2014)
 
Por que Node JS?
Por que Node JS?Por que Node JS?
Por que Node JS?
 
Xen e CoreOS: solução para data mining com NodeJS e ElasticSearch
Xen e CoreOS: solução para data mining com NodeJS e ElasticSearchXen e CoreOS: solução para data mining com NodeJS e ElasticSearch
Xen e CoreOS: solução para data mining com NodeJS e ElasticSearch
 
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
 
Frontend (RailsMG)
Frontend (RailsMG)Frontend (RailsMG)
Frontend (RailsMG)
 
LAMP: Desenvolvendo além do trivial
LAMP: Desenvolvendo além do trivialLAMP: Desenvolvendo além do trivial
LAMP: Desenvolvendo além do trivial
 
Mean Stack - Aplicações Web Modernas com MEAN
Mean Stack - Aplicações Web Modernas com MEANMean Stack - Aplicações Web Modernas com MEAN
Mean Stack - Aplicações Web Modernas com MEAN
 
MEAN Full Stack JavaScript - TaSafoConf 2015
MEAN Full Stack JavaScript - TaSafoConf 2015MEAN Full Stack JavaScript - TaSafoConf 2015
MEAN Full Stack JavaScript - TaSafoConf 2015
 
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
 
Node.js: 5 razões para começar a utilizar
Node.js: 5 razões para começar a utilizarNode.js: 5 razões para começar a utilizar
Node.js: 5 razões para começar a utilizar
 
Nodejs - A performance que eu sempre quis ter
Nodejs - A performance que eu sempre quis terNodejs - A performance que eu sempre quis ter
Nodejs - A performance que eu sempre quis ter
 
Drupal Performance
Drupal PerformanceDrupal Performance
Drupal Performance
 
Uma visão rápida sobre Nodejs
Uma visão rápida sobre NodejsUma visão rápida sobre Nodejs
Uma visão rápida sobre Nodejs
 
NGiNX, o motor da sua aplicação web
NGiNX, o motor da sua aplicação webNGiNX, o motor da sua aplicação web
NGiNX, o motor da sua aplicação web
 
Torne seu Site Mais Veloz! I GDG Women Sorocaba
Torne seu Site Mais Veloz! I GDG Women SorocabaTorne seu Site Mais Veloz! I GDG Women Sorocaba
Torne seu Site Mais Veloz! I GDG Women Sorocaba
 
Descobrindo o Nginx - Um servidor web de alta performance
Descobrindo o Nginx - Um servidor web de alta performanceDescobrindo o Nginx - Um servidor web de alta performance
Descobrindo o Nginx - Um servidor web de alta performance
 
Curso HTML 5 - Aula Inicial
Curso HTML 5 - Aula InicialCurso HTML 5 - Aula Inicial
Curso HTML 5 - Aula Inicial
 
Slides nginx
Slides nginxSlides nginx
Slides nginx
 
Browsers como vivem o que fazem
Browsers como vivem o que fazemBrowsers como vivem o que fazem
Browsers como vivem o que fazem
 
NoSQL na nuvem com o Azure Cosmos DB - MVPConf 2018
NoSQL na nuvem com o Azure Cosmos DB - MVPConf 2018NoSQL na nuvem com o Azure Cosmos DB - MVPConf 2018
NoSQL na nuvem com o Azure Cosmos DB - MVPConf 2018
 

Destacado

Aplicações Web de Alta Performance
Aplicações Web de Alta PerformanceAplicações Web de Alta Performance
Aplicações Web de Alta PerformancePedro Chaves
 
Facilitando o desenvolvimento orientado a testes em aplicações PHP
Facilitando o desenvolvimento orientado a testes em aplicações PHPFacilitando o desenvolvimento orientado a testes em aplicações PHP
Facilitando o desenvolvimento orientado a testes em aplicações PHPPedro Chaves
 
Esqueça a linguagem e vire um programador de verdade
Esqueça a linguagem e vire um programador de verdadeEsqueça a linguagem e vire um programador de verdade
Esqueça a linguagem e vire um programador de verdadePedro Chaves
 
Desbancando mitos sobre PHP e o futuro da linguagem
Desbancando mitos sobre PHP e o futuro da linguagemDesbancando mitos sobre PHP e o futuro da linguagem
Desbancando mitos sobre PHP e o futuro da linguagemPedro Chaves
 
"Go" Contra ou a favor? Já vale a pena investir nessa linguagem?
"Go" Contra ou a favor? Já vale a pena investir nessa linguagem?"Go" Contra ou a favor? Já vale a pena investir nessa linguagem?
"Go" Contra ou a favor? Já vale a pena investir nessa linguagem?José Yoshiriro
 
Scala Frameworks for Web Application 2016
Scala Frameworks for Web Application 2016Scala Frameworks for Web Application 2016
Scala Frameworks for Web Application 2016takezoe
 

Destacado (7)

Programando em Go
Programando em GoProgramando em Go
Programando em Go
 
Aplicações Web de Alta Performance
Aplicações Web de Alta PerformanceAplicações Web de Alta Performance
Aplicações Web de Alta Performance
 
Facilitando o desenvolvimento orientado a testes em aplicações PHP
Facilitando o desenvolvimento orientado a testes em aplicações PHPFacilitando o desenvolvimento orientado a testes em aplicações PHP
Facilitando o desenvolvimento orientado a testes em aplicações PHP
 
Esqueça a linguagem e vire um programador de verdade
Esqueça a linguagem e vire um programador de verdadeEsqueça a linguagem e vire um programador de verdade
Esqueça a linguagem e vire um programador de verdade
 
Desbancando mitos sobre PHP e o futuro da linguagem
Desbancando mitos sobre PHP e o futuro da linguagemDesbancando mitos sobre PHP e o futuro da linguagem
Desbancando mitos sobre PHP e o futuro da linguagem
 
"Go" Contra ou a favor? Já vale a pena investir nessa linguagem?
"Go" Contra ou a favor? Já vale a pena investir nessa linguagem?"Go" Contra ou a favor? Já vale a pena investir nessa linguagem?
"Go" Contra ou a favor? Já vale a pena investir nessa linguagem?
 
Scala Frameworks for Web Application 2016
Scala Frameworks for Web Application 2016Scala Frameworks for Web Application 2016
Scala Frameworks for Web Application 2016
 

Similar a Como se tornar um viciado em performance em 5 passos

Aumente a performance de seu site
Aumente a performance de seu siteAumente a performance de seu site
Aumente a performance de seu siteHenrique Lima
 
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
 
Otimização Front-end para WordPress
Otimização Front-end para WordPressOtimização Front-end para WordPress
Otimização Front-end para WordPressGuga Alves
 
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
 
Melhorando o desempenho do seu WordPress
Melhorando o desempenho do seu WordPressMelhorando o desempenho do seu WordPress
Melhorando o desempenho do seu WordPressJulian Fernandes
 
Alta Performance em Aplicações Web
Alta Performance em Aplicações WebAlta Performance em Aplicações Web
Alta Performance em Aplicações WebAnderson Aguiar
 
Workflow WordPress + JavaScript - WordCamp Rio
Workflow WordPress + JavaScript  - WordCamp RioWorkflow WordPress + JavaScript  - WordCamp Rio
Workflow WordPress + JavaScript - WordCamp RioFellyph Cintra
 
Performance e otimização no wordpress
Performance e otimização no wordpressPerformance e otimização no wordpress
Performance e otimização no wordpressDaniel Paz
 
Um milhao de usuários simultâneos
Um milhao de usuários simultâneosUm milhao de usuários simultâneos
Um milhao de usuários simultâneosFernando Ike
 
Performance Codificando Night Week 2016
Performance Codificando Night Week 2016Performance Codificando Night Week 2016
Performance Codificando Night Week 2016Rodolfo Fadino Junior
 
Otimizacao Front-End para WordPress - OlhoSEO 2013
Otimizacao Front-End para WordPress - OlhoSEO 2013Otimizacao Front-End para WordPress - OlhoSEO 2013
Otimizacao Front-End para WordPress - OlhoSEO 2013Guga Alves
 
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
 
Desenvolvemos para web?
Desenvolvemos para web?Desenvolvemos para web?
Desenvolvemos para web?Luis Vendrame
 
Otimizacao de websites em PHP
Otimizacao de websites em PHPOtimizacao de websites em PHP
Otimizacao de websites em PHPFelipe Ribeiro
 
Melhorando o desempenho do seu WordPress [WordCamp São Paulo 2015]
Melhorando o desempenho do seu WordPress [WordCamp São Paulo 2015]Melhorando o desempenho do seu WordPress [WordCamp São Paulo 2015]
Melhorando o desempenho do seu WordPress [WordCamp São Paulo 2015]Tiago Hillebrandt
 
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
 
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
 
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
 

Similar a Como se tornar um viciado em performance em 5 passos (20)

Aumente a performance de seu site
Aumente a performance de seu siteAumente a performance de seu site
Aumente a performance de seu site
 
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
 
Otimização Front-end para WordPress
Otimização Front-end para WordPressOtimização Front-end para WordPress
Otimização Front-end para WordPress
 
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
 
Melhorando o desempenho do seu WordPress
Melhorando o desempenho do seu WordPressMelhorando o desempenho do seu WordPress
Melhorando o desempenho do seu WordPress
 
Alta Performance em Aplicações Web
Alta Performance em Aplicações WebAlta Performance em Aplicações Web
Alta Performance em Aplicações Web
 
Workflow WordPress + JavaScript - WordCamp Rio
Workflow WordPress + JavaScript  - WordCamp RioWorkflow WordPress + JavaScript  - WordCamp Rio
Workflow WordPress + JavaScript - WordCamp Rio
 
Performance e otimização no wordpress
Performance e otimização no wordpressPerformance e otimização no wordpress
Performance e otimização no wordpress
 
Um milhao de usuários simultâneos
Um milhao de usuários simultâneosUm milhao de usuários simultâneos
Um milhao de usuários simultâneos
 
Performance Codificando Night Week 2016
Performance Codificando Night Week 2016Performance Codificando Night Week 2016
Performance Codificando Night Week 2016
 
Otimizacao Front-End para WordPress - OlhoSEO 2013
Otimizacao Front-End para WordPress - OlhoSEO 2013Otimizacao Front-End para WordPress - OlhoSEO 2013
Otimizacao Front-End para WordPress - OlhoSEO 2013
 
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
 
Desenvolvemos para web?
Desenvolvemos para web?Desenvolvemos para web?
Desenvolvemos para web?
 
Otimizacao de websites em PHP
Otimizacao de websites em PHPOtimizacao de websites em PHP
Otimizacao de websites em PHP
 
Melhorando o desempenho do seu WordPress [WordCamp São Paulo 2015]
Melhorando o desempenho do seu WordPress [WordCamp São Paulo 2015]Melhorando o desempenho do seu WordPress [WordCamp São Paulo 2015]
Melhorando o desempenho do seu WordPress [WordCamp São Paulo 2015]
 
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
 
Desempenho web
Desempenho webDesempenho web
Desempenho web
 
Otimização de aplicações web
Otimização de aplicações webOtimização de aplicações web
Otimização de aplicações web
 
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
 
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.
 

Como se tornar um viciado em performance em 5 passos