Your SlideShare is downloading. ×
Como se tornar umviciado em performanceem 5 passosPedro Chaves - 3º PHPMG Talks
O primeiro motivoNinguém elogia um siterápido, mas todos reclamamde um site lento.
Tempo de atraso   Reação do usuário0 - 100ms         Instantânea100 - 300ms       Atraso perceptível300 - 1000ms      Comp...
100ms por  página 1% de receita
Tempo de disparo de  onLoad15% tempo de permanência
O quarto motivoSeu site nunca serárápido o suficientesozinho.
O quinto motivoMelhorar aperformance é uma viade mão dupla.
Onde você busca seus      dados?#1
O MySQL é o lugar maislento para buscar seus        dados.
Seus novos melhoresamigosQue tal salvar os dados em lugares alternativos?
Seus novos melhoresamigosRedis salva em memória RAM ou em disco
Se dados não mudamtoda 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...
Seus novos melhoresamigosMemcached + arquivo em disco gerado por rotina
Como sua aplicação     processa os dados?#2
A qualidade do seu códigointerfere na velocidade da      sua aplicação.
The KISS principleNem sempre o código maisbonito é o mais rápido oueficiente.
The KISS principle
KEEP  ITSIMPLESTUPID
APC - Alternative            PHP CacheDicas 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 principleAs vezes é necessário abrirmão de conceitos deengenharia de software emtroca de performance.
SELECT COUNT(*), a.nome AS nome_artistaFROM artistas AS aINNER JOIN musicas AS m ON m.id_artista = a.idWHERE m.id_artista ...
SELECT nome, num_musicasFROM artistasWHERE id_artista = ?Dicas rápidas de performance
Quando sua aplicação processa os dados?#3
Você realmente precisaexecutar seu código toda         hora?
Que tal colocar uma camada decache no retorno de todas asrequisições?Checkpoint #3
Varnish, seu melhor amigo
O protocolo HTTP está aí para serutilizado da maneira correta!                                Porque nosso navegador també...
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...
Expires    Não busca a página no servidor se o    tempo do cache não tiver expiradoExpires: 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ê.         ...
Quanto menos       melhor!#4
A requisição maisrá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      ...
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           ...
Checklist●   Só um arquivo CSS ✓●   JavaScript no rodapé ✓●   Poucos arquivos JavaScript ✓●   Minificar JS / CSS ✓●   Java...
Cookies são inúteis  para arquivos    estáticos.
Checklist●   Só um arquivo CSS ✓●   JavaScript no rodapé ✓●   Poucos arquivos JavaScript ✓●   Minificar JS / CSS ✓●   Java...
gzip! até 80% do tamanho da requisição :D
Checklist●   Só um arquivo CSS ✓●   JavaScript no rodapé ✓●   Poucos arquivos JavaScript ✓●   Minificar JS / CSS ✓●   Java...
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 ✓●   Java...
Checklist●   Só um arquivo CSS ✓●   JavaScript no rodapé ✓●   Poucos arquivos JavaScript ✓●   Minificar JS / CSS ✓●   Java...
Dicas finais#5
"Existem duas coisasdifí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 umparadigma só. Se aproveite          disso.
Teste sua performance!PageSpeed e YSlow podem        te ajudar.
Obrigado!
Como se tornar um viciado em performance em 5 passos
Como se tornar um viciado em performance em 5 passos
Como se tornar um viciado em performance em 5 passos
Como se tornar um viciado em performance em 5 passos
Como se tornar um viciado em performance em 5 passos
Como se tornar um viciado em performance em 5 passos
Como se tornar um viciado em performance em 5 passos
Upcoming SlideShare
Loading in...5
×

Como se tornar um viciado em performance em 5 passos

353

Published on

É muito importante focarmos na performance do seu site, para isso apresento 5 passos do que pode ser feito para melhorar a performance da sua aplicação web, deixando você e seu usuário mais felizes

Published in: Technology

Transcript of "Como se tornar um viciado em performance em 5 passos"

  1. 1. Como se tornar umviciado em performanceem 5 passosPedro Chaves - 3º PHPMG Talks
  2. 2. O primeiro motivoNinguém elogia um siterápido, mas todos reclamamde um site lento.
  3. 3. Tempo de atraso Reação do usuário0 - 100ms Instantânea100 - 300ms Atraso perceptível300 - 1000ms Computador trabalhando...1s+ Começa a perder o foco10s+ Eu volto depois...
  4. 4. 100ms por página 1% de receita
  5. 5. Tempo de disparo de onLoad15% tempo de permanência
  6. 6. O quarto motivoSeu site nunca serárápido o suficientesozinho.
  7. 7. O quinto motivoMelhorar aperformance é uma viade mão dupla.
  8. 8. Onde você busca seus dados?#1
  9. 9. O MySQL é o lugar maislento para buscar seus dados.
  10. 10. Seus novos melhoresamigosQue tal salvar os dados em lugares alternativos?
  11. 11. Seus novos melhoresamigosRedis salva em memória RAM ou em disco
  12. 12. Se dados não mudamtoda hora, não precisa buscá-los toda hora
  13. 13. Rotina toda Se não existe busca madrugada do arquivo Salva um arquivo JSON no disco e um Site busca do registro no Memcached MemcachedCrontab é seu melhor amigo!
  14. 14. Seus novos melhoresamigosMemcached + arquivo em disco gerado por rotina
  15. 15. Como sua aplicação processa os dados?#2
  16. 16. A qualidade do seu códigointerfere na velocidade da sua aplicação.
  17. 17. The KISS principleNem sempre o código maisbonito é o mais rápido oueficiente.
  18. 18. The KISS principle
  19. 19. KEEP ITSIMPLESTUPID
  20. 20. APC - Alternative PHP CacheDicas rápidas - Habilite APC
  21. 21. __autoload não! (confirmado pelo próprio Rasmus)Dicas rápidas - Habilite APC
  22. 22. Dicas rápidas - Passe parâmetros por referência
  23. 23. Dicas rápidas - Utilize funções nativas
  24. 24. Dicas rápidas - Junte técnicas
  25. 25. The KISS principleAs vezes é necessário abrirmão de conceitos deengenharia de software emtroca de performance.
  26. 26. SELECT COUNT(*), a.nome AS nome_artistaFROM artistas AS aINNER JOIN musicas AS m ON m.id_artista = a.idWHERE m.id_artista = ?GROUP BY m.id_artistaDicas rápidas de performance
  27. 27. SELECT nome, num_musicasFROM artistasWHERE id_artista = ?Dicas rápidas de performance
  28. 28. Quando sua aplicação processa os dados?#3
  29. 29. Você realmente precisaexecutar seu código toda hora?
  30. 30. Que tal colocar uma camada decache no retorno de todas asrequisições?Checkpoint #3
  31. 31. Varnish, seu melhor amigo
  32. 32. O protocolo HTTP está aí para serutilizado da maneira correta! Porque nosso navegador também faz cache por nós :DProtocolo HTTP to the rescue!
  33. 33. 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
  34. 34. Expires Não busca a página no servidor se o tempo do cache não tiver expiradoExpires: Sun, 17-Jan-2038 19:14:07 GMT
  35. 35. ETag + If-None-Match "Versão" daquela requisição. Pode conter qualquer conteúdo, escolhido por você. ETag: JSV1
  36. 36. Quanto menos melhor!#4
  37. 37. A requisição maisrápida é aquela que não existe.
  38. 38. Checklist● Só um arquivo CSS ✓
  39. 39. A primeira impressão é a que fica.
  40. 40. Checklist● Só um arquivo CSS ✓● JavaScript no rodapé ✓
  41. 41. Checklist● Só um arquivo CSS ✓● JavaScript no rodapé ✓● Poucos arquivos JavaScript ✓
  42. 42. Google Closure YUI Compressor Compiler Minificar JavaScript e CSS! UglifyJS CSSMin
  43. 43. Checklist● Só um arquivo CSS ✓● JavaScript no rodapé ✓● Poucos arquivos JavaScript ✓● Minificar JS / CSS ✓
  44. 44. $LAB.js head.js Dois JavaScript não carregam juntos. A não ser que você queira...RequireJS YepNope
  45. 45. Checklist● Só um arquivo CSS ✓● JavaScript no rodapé ✓● Poucos arquivos JavaScript ✓● Minificar JS / CSS ✓● JavaScript assíncrono ✓
  46. 46. Cookies são inúteis para arquivos estáticos.
  47. 47. Checklist● Só um arquivo CSS ✓● JavaScript no rodapé ✓● Poucos arquivos JavaScript ✓● Minificar JS / CSS ✓● JavaScript assíncrono ✓● Content Delivery Network ✓
  48. 48. gzip! até 80% do tamanho da requisição :D
  49. 49. Checklist● Só um arquivo CSS ✓● JavaScript no rodapé ✓● Poucos arquivos JavaScript ✓● Minificar JS / CSS ✓● JavaScript assíncrono ✓● Content Delivery Network ✓● gzip ✓
  50. 50. Otimize TODAS as imagens! jpegoptim faz isso por você ;)
  51. 51. base64 === -1 hit
  52. 52. Checklist● Só um arquivo CSS ✓● JavaScript no rodapé ✓● Poucos arquivos JavaScript ✓● Minificar JS / CSS ✓● JavaScript assíncrono ✓● Content Delivery Network ✓● gzip ✓● Imagens otimizadas ✓
  53. 53. 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 ✓
  54. 54. Dicas finais#5
  55. 55. "Existem duas coisasdifíceis em TI: dar nome às coisas e invalidar cache" Alguém muito sábio
  56. 56. Cache incremental vs.Refazer todo o cache vs. Excluir o cache
  57. 57. PHP não possui umparadigma só. Se aproveite disso.
  58. 58. Teste sua performance!PageSpeed e YSlow podem te ajudar.
  59. 59. Obrigado!

×