Este documento discute como implementar cache para melhorar o desempenho de sites e blogs. Ele explica como analisar logs e métricas para identificar gargalos, como configurar cache no navegador, servidor e plugins, e demonstra como o Varnish pode acelerar sites ao cachear conteúdo estático e dinâmico.
1. Como fazer seu site/blog voar baixo sem muito esforço
Como fazer seu site/blog voar
baixo sem muito esforço . . .
@bggo
bruno@linux.com
2. Como fazer seu site/blog voar baixo sem muito esforço
Apresentação
● Vamos falar de . . .
● Cache . . .
● Objetivos . . .
@bggo
bruno@linux.com
3. Como fazer seu site/blog voar baixo sem muito esforço
# whoami
● Bruno Gurgel (@bggo);
● Entusiasta;
● Colaborador;
● Tímido contribuinte;
● Experiência;
● Certificações;
@bggo
bruno@linux.com
4. Como fazer seu site/blog voar baixo sem muito esforço
Introdução
● O site/blog
– Caiu …. ?
– Ta fora … ?
– Ta lento … ?
● Não estou conseguindo entrar;
@bggo
bruno@linux.com
5. Como fazer seu site/blog voar baixo sem muito esforço
Introdução
@bggo
bruno@linux.com
6. Como fazer seu site/blog voar baixo sem muito esforço
Introdução
● Respirem isso não é raro! . . .
É comum!!!
@bggo
bruno@linux.com
7. Como fazer seu site/blog voar baixo sem muito esforço
Analisando o problema
● O que dizem os dados?
– De onde tirar dados . .
● Logs;
● Analitycs;
● Pwiki;
@bggo
bruno@linux.com
8. Como fazer seu site/blog voar baixo sem muito esforço
Analisando o problema
● Analisando o problema
– Com os dados compilados:
● Podemos “Tunnar”?
● Onde está o gargalo?
● É necessário expandir?
● Qual é o tamanho das minhas páginas?
● Estou usando compactação para
entregar?
@bggo ● O que poderia fazer que eu não estou
bruno@linux.com fazendo . . .
9. Como fazer seu site/blog voar baixo sem muito esforço
Olhando a arquitetura
@bggo
bruno@linux.com
10. Como fazer seu site/blog voar baixo sem muito esforço
Olhando a arquitetura
VPS;
@bggo
Servidor compartilhado;
bruno@linux.com
11. Como fazer seu site/blog voar baixo sem muito esforço
E se … usarmos cache
● Falando em coisas que não
estamos fazendo:
– Já fazemos isso?
● Cache …...
– Mas não é pra limpar?
@bggo
bruno@linux.com
12. Como fazer seu site/blog voar baixo sem muito esforço
Por que usar o cache?
● Requisições
– Idênticas;
– Diferentes;
● Conteúdo;
– Estático;
– Dinâmico;
● Qual é o custo de uma requisição
do meu site?
@bggo
bruno@linux.com ● Quanto de recurso eu gasto para
atender um usuário?
13. Como fazer seu site/blog voar baixo sem muito esforço
Aonde o cache entra
● Na frente;
● No lado;
● Atrás;
● Usando conscientemente;
@bggo Faça do cache um aliado . . .
bruno@linux.com
14. Como fazer seu site/blog voar baixo sem muito esforço
Aonde o cache entra
● Podemos fazer cache de:
– Texto;
– Imagens;
– Vídeos;
– Arquivos;
– Php, Asp, Rails, Django, etc . . .
@bggo
bruno@linux.com
15. Como fazer seu site/blog voar baixo sem muito esforço
Aonde o cache entra
● Mas a linguagem é dinâmica!!!
– Nem tudo é dinâmico . . .
● Requisição → processo → entrega;
● Requisições iguais não precisam ser
processadas mais de uma vez;
● Elementos diversos chamados pela
requisição podem estar em cache ou
não;
@bggo
bruno@linux.com
16. Como fazer seu site/blog voar baixo sem muito esforço
Aonde o cache entra
● Cautela . . .
– Analise de viabilidade;
– Testes;
● Atenção especial
– Cookies;
– Session;
– Session Hijacking;
@bggo
bruno@linux.com
17. Como fazer seu site/blog voar baixo sem muito esforço
Session Hijacking
● O que é;
● Como acontece;
● Como o uso errôneo do cache
pode acarretar isso;
@bggo
bruno@linux.com
18. Como fazer seu site/blog voar baixo sem muito esforço
Coitado do cache
● O vilão da história;
● Crtl + Shift + Del;
● Já limpou o cache?
● O problema é o cache, limpa e
testa de novo;
#cacheforprod
#donocachedev
@bggo
bruno@linux.com
19. Como fazer seu site/blog voar baixo sem muito esforço
Onde está o cache?
● Browser Cache;
– Client cache;
● Server Cache;
– Http Acelerator;
– Proxy Reverso;
@bggo
bruno@linux.com
20. Como fazer seu site/blog voar baixo sem muito esforço
Falando de HTTP
● Cache e o Protocolo HTTP
● Capítulo 4, Varnish Book
– Request;
– Response;
● GET
● HEADER
● POST
@bggo
bruno@linux.com – STATELESS
– INDEMPOTENCE
21. Como fazer seu site/blog voar baixo sem muito esforço
Falando de HTTP
@bggo
bruno@linux.com
22. Como fazer seu site/blog voar baixo sem muito esforço
Falando de HTTP
@bggo
bruno@linux.com
23. Como fazer seu site/blog voar baixo sem muito esforço
Falando de HTTP
@bggo
bruno@linux.com
24. Como fazer seu site/blog voar baixo sem muito esforço
Olhando a arquitetura
@bggo
bruno@linux.com
25. Como fazer seu site/blog voar baixo sem muito esforço
O cache a nosso favor
@bggo
bruno@linux.com
26. Como fazer seu site/blog voar baixo sem muito esforço
Varnish
@bggo
bruno@linux.com
27. Como fazer seu site/blog voar baixo sem muito esforço
Varnish
● Reverse Proxy / Http Acelerator /
Web Acelerator
● Designerd for:
– Modern Hardware
– Modern O.S.
– Modern Work Loads
● VLC;
@bggo ● OpenSource;
bruno@linux.com
28. Como fazer seu site/blog voar baixo sem muito esforço
Mas eu só tenho um servidor
● Você pode usar o varnish com
um único servidor:
– Varnish – 80
– WebServer - ?
● https://www.varnish-
cache.org/docs/3.0/faq/general.ht
@bggo ml#can-i
bruno@linux.com
29. Como fazer seu site/blog voar baixo sem muito esforço
Mas eu só tenho um servidor
@bggo
bruno@linux.com
30. Como fazer seu site/blog voar baixo sem muito esforço
Requisição com Cache
@bggo
bruno@linux.com
31. Como fazer seu site/blog voar baixo sem muito esforço
Requisição com Cache
@bggo
bruno@linux.com
32. Como fazer seu site/blog voar baixo sem muito esforço
Não quero usar um serviço
● Dá pra resolver de outra
maneira?
● Plugins
– Worpress
● Wp-cache;
● Wp Super Cache;
@bggo
● Wp File Cache
bruno@linux.com
33. Como fazer seu site/blog voar baixo sem muito esforço
Em números
● Talk is cheap!
● Show me the … numbers
@bggo
bruno@linux.com
34. Como fazer seu site/blog voar baixo sem muito esforço
Demo . . .
● Murpy`s law!!!!!
@bggo
bruno@linux.com
35. Como fazer seu site/blog voar baixo sem muito esforço
Demo . . .
● Murpy`s law!!!!!
@bggo
bruno@linux.com
36. Como fazer seu site/blog voar baixo sem muito esforço
Benchmark
Varnish Apache
@bggo
bruno@linux.com
37. Como fazer seu site/blog voar baixo sem muito esforço
Benchmark
Varnish Apache
@bggo
bruno@linux.com
38. Como fazer seu site/blog voar baixo sem muito esforço
Benchmark
Apache
@bggo
bruno@linux.com
39. Como fazer seu site/blog voar baixo sem muito esforço
Benchmark
@bggo
bruno@linux.com
40. Como fazer seu site/blog voar baixo sem muito esforço
Benchmark
● VMs
– 2CPU;
– 512Mb;
● Debian
– Request → Apache;
– Request → Varnish → Apache;
@bggo
bruno@linux.com
41. Como fazer seu site/blog voar baixo sem muito esforço
Benchmark
● VMs
– 2CPU;
– 512Mb;
● Debian
– Request → Apache;
– Request → Varnish → Apache;
@bggo
bruno@linux.com
42. Como fazer seu site/blog voar baixo sem muito esforço
Benchmark
● VMs
– 2CPU;
– 512Mb;
● Debian
– Request → Apache;
– Request → Varnish → Apache;
@bggo
bruno@linux.com
43. Como fazer seu site/blog voar baixo sem muito esforço
Benchmark
● Recursos concorrentes
– Varnish, apache, mysql
– Apache, mysql
@bggo
bruno@linux.com
44. Como fazer seu site/blog voar baixo sem muito esforço
Obrigado
● bruno.gurgel@gmail.com
● @bggo
● https://github.com/bggo
● www.brunogurgel.com.br
@bggo
bruno@linux.com