Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Vamos falar sobre Cache
Felipe Klerk Signorini
DevOps - ativo.com
● Arquiteto de software
● Infra estrutura
● Desenvolvimento.
Nossa conversa
➔ Por onde começar
➔ Estratégias
➔ Aonde tomar cuidado
"O problema é cache, sempre o cache"
➔ Quais são os ...
1.
Por onde começar?
Possuímos vários tipos de
cache em várias fases, nas
várias requisições.
Podemos dividir em dois grandes grupos, back e fr...
Processo web
BrowserUsuário
Domain Server
Register DNS
Server
Server
Processo web
BrowserUsuário
Domain Server
Register DNS
Server
Server
Processo web
BrowserUsuário
Server
Processo web
BrowserUsuário
Server nginx
php-fpm
mysql
Processo web
Usuário
Server
Usuário
Usuário
Usuário
Usuário
Usuário
Usuário
Usuário
Processo web
Server20
Usuário
Cache é
Guardar algo
temporáriamente para uso
posterior.
Processo web
BrowserUsuário
Server nginx
php-fpm
mysql
Processo web
Browser
Usuário Server nginx
php-fpm
mysql
Cache
2.
Estratégias e lições
aprendidas
There are two hard things in
computer science: cache
invalidation and naming
things.
-- Phil Karlton
Cache invalidation
Usuário
Server
Process
Cache
Usuário
Usuário
Server
Process
Cache
Usuário
Usuário
Admin
Inclui um novo artigo
Porém o conteúdo
não aparece
Cache invalidation
Cache invalidation - distributed system
Usuário
Server
Process Process
Cache
Server
Usuário Usuário Usuário
Usuário
Proces...
Cache invalidation - Mobile/Desktop
Desktop
Server
Process
Cache
Mobile
Versão desktop
para mobile
Cache invalidation - Mobile/Desktop
Desktop
Server
Process
Cache
Mobile
Versão desktop
para mobile
Invalidação:
Deploys
Após fazer um deploy,
rodar um script que inválida
alguns tipos de cache.
Por tempo
Estabeleça tempos...
Para as invalidações
➔ Crie serviços para gerenciar o cache (cache manager),
centralizando o controle de cache, facilitand...
Instale o w3 total cache e
tenha o site 300% mais
rápido.
Será mesmo??
Cache
➔ Aumenta consideravelmente a velocidade de carregamento do
site, principalmente de sites de conteúdo, muito utiliza...
Saiba o que realmente está
fazendo….
WP - SuperCache
WP -
w3 total
cache
WP - wordfence
CloudFlare
CloudFlare
IO cache
Cache invalidation challenge
Akamai
Reverse Cache
APP Cache
Object Cache
Browser
cache
E como seria em um sistema
distribuído
Tipos de cache BackEnd
● Cache em memória
○ Memcache
○ Redis
● Em disco
○ Files (SSD plz)
○ Servidores NFS
Cache - Em disco
HDD SSDVS
Em disco
➔ Realmente tem efetividade para grandes processamentos.
➔ IO é um processo lento e bem custoso
➔ O cache fica na...
Cache - Memória
Cache de memória
➔ Bem mais rápido comparado ao IO
➔ Perfeito para sistemas distribuídos
➔ Facilmente escalável
➔ Recursos...
3.
Cache, cache e cache
BackEnd
Processos guardados e reutilizados em servidores.
HTTP
Cache - App - Page
Routes Controller
DataBase
View
MIddleware
HTTP
Cache - App - Page
Routes Controller
DataBase
View
MIddleware
Cache
Cache - Object
Class Friends Call Model
Controller
MySQL ForEach Filter
$my_friends
Cache - Object
Class Friends Call Model
Controller
MySQL ForEach Filter
$my_friends
Cache
View Object
Cache - View
Render
Controller
View Object Render
View Object Render
View Object
Cache - View
Render
Controller
View Object Render
View Object Render
Cache
Model
Cache - Models
Database
Controller
Model Database
Model
Cache - Models
Database
Controller
Model Database
Cache
get_file_contents
Cache - Request
HTTP
Controller
get_file_contents HTTP
Controller
get_file_contents
Cache - Request
HTTP
Controller
get_file_contents HTTP
Controller
Cache
Cache - Reverse Proxy
HTTP Servers Applications DataBase
Cache - Reverse Proxy
HTTP Servers Applications DataBase
Proxy
Cache
Cache - Proxy reverso
Cache - CDNs
HTTP Servers
Statics files
Cache - CDNs
HTTP Servers
Statics files
CDN
Cache - CDNs
FrontEnd
Processos guardados e reutilizados em cada usuário.
Cache - HTTP Caching
Browser
/page
Cache
200 ok
Content-Length: 1024
Cache-Control: max-age=120
ETag: "x34234242"
Servers
...
Cache - HTTP Caching
Browser
/page
Cache
200 ok
Content-Length: 1024
Cache-Control: max-age=120
ETag: "x34234242"
Servers
...
Cache - HTTP Caching
Cache - Local Storage
jquery request
Server
AjaxforEach Process
Cache - Local Storage
jquery request
Server
AjaxforEach Process
Cache
Local Storage
Mini Banco de dados de chave e valor.
● Até 5mb de dados
Cache - Manifest
jquery
forEach Process
Offline Cache
Manifest cache
Possibilidade de guardar arquivos e informações para uso
offline.
- Navegação off-line: os usuários podem n...
Manifest
➔ Planeje bem o processo de invalidação, para qualquer tipo de
alteração, este deverá ser replicado no arquivo de...
4.
Concluíndo
Entenda como cada estilo
de cache funciona, entenda
como funciona sua
arquitetura.
Atenção redobrada para o
cache em sistemas
distribuídos.
Aconselha-se a implementar
o cache depois que lançar o
produto.
Bye.
felipeklerk@yahoo.com.br
linkedin.com/in/felipe-klerk-signorini
facebook.com/felipesignorini
Vamos conversar sobre cache
Vamos conversar sobre cache
Vamos conversar sobre cache
Vamos conversar sobre cache
Vamos conversar sobre cache
Vamos conversar sobre cache
Vamos conversar sobre cache
Vamos conversar sobre cache
Vamos conversar sobre cache
Vamos conversar sobre cache
Vamos conversar sobre cache
Vamos conversar sobre cache
Vamos conversar sobre cache
Vamos conversar sobre cache
Vamos conversar sobre cache
Vamos conversar sobre cache
Vamos conversar sobre cache
Vamos conversar sobre cache
Vamos conversar sobre cache
Vamos conversar sobre cache
Vamos conversar sobre cache
Upcoming SlideShare
Loading in …5
×

Vamos conversar sobre cache

393 views

Published on

Palestra feito na PHPConf - 2016

Tudo sobre cache em aplicativos PHP, comento sobre os pontos de falha, o problema de invalidação, estrategias de como aplicar cache, bem como todos os tipos de cache, opções e possibilidades de multiplos caches e afins.

Tópicos importantes:
-- Planejamento de cache
-- Estrátegias de invalidação
-- Cache em back end
-- Cache para front end
-- Cache reverso
-- Localstorage

Published in: Technology
  • Be the first to comment

Vamos conversar sobre cache

  1. 1. Vamos falar sobre Cache
  2. 2. Felipe Klerk Signorini DevOps - ativo.com ● Arquiteto de software ● Infra estrutura ● Desenvolvimento.
  3. 3. Nossa conversa ➔ Por onde começar ➔ Estratégias ➔ Aonde tomar cuidado "O problema é cache, sempre o cache" ➔ Quais são os tipos de cache Memória, io, no backend no frontend. ➔ Exemplos
  4. 4. 1. Por onde começar?
  5. 5. Possuímos vários tipos de cache em várias fases, nas várias requisições. Podemos dividir em dois grandes grupos, back e front.
  6. 6. Processo web BrowserUsuário Domain Server Register DNS Server Server
  7. 7. Processo web BrowserUsuário Domain Server Register DNS Server Server
  8. 8. Processo web BrowserUsuário Server
  9. 9. Processo web BrowserUsuário Server nginx php-fpm mysql
  10. 10. Processo web Usuário Server Usuário Usuário Usuário Usuário Usuário Usuário Usuário
  11. 11. Processo web Server20 Usuário
  12. 12. Cache é Guardar algo temporáriamente para uso posterior.
  13. 13. Processo web BrowserUsuário Server nginx php-fpm mysql
  14. 14. Processo web Browser Usuário Server nginx php-fpm mysql Cache
  15. 15. 2. Estratégias e lições aprendidas
  16. 16. There are two hard things in computer science: cache invalidation and naming things. -- Phil Karlton
  17. 17. Cache invalidation Usuário Server Process Cache Usuário Usuário
  18. 18. Server Process Cache Usuário Usuário Admin Inclui um novo artigo Porém o conteúdo não aparece Cache invalidation
  19. 19. Cache invalidation - distributed system Usuário Server Process Process Cache Server Usuário Usuário Usuário Usuário Process Server Cache V1 V2
  20. 20. Cache invalidation - Mobile/Desktop Desktop Server Process Cache Mobile Versão desktop para mobile
  21. 21. Cache invalidation - Mobile/Desktop Desktop Server Process Cache Mobile Versão desktop para mobile
  22. 22. Invalidação: Deploys Após fazer um deploy, rodar um script que inválida alguns tipos de cache. Por tempo Estabeleça tempos de invalidação, quase todas as informações não precisam ser em real time Por triggers Por gatilhos, tais como um novo post, uma nova atualização de preços e afins
  23. 23. Para as invalidações ➔ Crie serviços para gerenciar o cache (cache manager), centralizando o controle de cache, facilitando o processo de invalidação. ➔ Estabeleça regras claras e concisas de criação e invalidação de cada cache. ➔ Tenha o dobro de cuidado quando estiver trabalhando com cache em sistema distribuídos. ➔ Começe o mais rápido
  24. 24. Instale o w3 total cache e tenha o site 300% mais rápido.
  25. 25. Será mesmo??
  26. 26. Cache ➔ Aumenta consideravelmente a velocidade de carregamento do site, principalmente de sites de conteúdo, muito utilizados com wordpress ou drupal. ➔ Diminui consideravelmente o consumo de recursos de servidor, evitando processos repetitivos. ➔ Atenção ao tipo de cache utilizado, cache em arquivos tendem a ficar obsoleto. ➔ Começe o mais rápido possível...
  27. 27. Saiba o que realmente está fazendo….
  28. 28. WP - SuperCache
  29. 29. WP - w3 total cache
  30. 30. WP - wordfence
  31. 31. CloudFlare
  32. 32. CloudFlare
  33. 33. IO cache
  34. 34. Cache invalidation challenge Akamai Reverse Cache APP Cache Object Cache Browser cache
  35. 35. E como seria em um sistema distribuído
  36. 36. Tipos de cache BackEnd ● Cache em memória ○ Memcache ○ Redis ● Em disco ○ Files (SSD plz) ○ Servidores NFS
  37. 37. Cache - Em disco HDD SSDVS
  38. 38. Em disco ➔ Realmente tem efetividade para grandes processamentos. ➔ IO é um processo lento e bem custoso ➔ O cache fica na máquina, o que pode trazer problemas para sistemas distribuídos ➔ SSD sempre...
  39. 39. Cache - Memória
  40. 40. Cache de memória ➔ Bem mais rápido comparado ao IO ➔ Perfeito para sistemas distribuídos ➔ Facilmente escalável ➔ Recursos melhores (memcache: objetos e possibilidade de utilizar tags)
  41. 41. 3. Cache, cache e cache
  42. 42. BackEnd Processos guardados e reutilizados em servidores.
  43. 43. HTTP Cache - App - Page Routes Controller DataBase View MIddleware
  44. 44. HTTP Cache - App - Page Routes Controller DataBase View MIddleware Cache
  45. 45. Cache - Object Class Friends Call Model Controller MySQL ForEach Filter $my_friends
  46. 46. Cache - Object Class Friends Call Model Controller MySQL ForEach Filter $my_friends Cache
  47. 47. View Object Cache - View Render Controller View Object Render View Object Render
  48. 48. View Object Cache - View Render Controller View Object Render View Object Render Cache
  49. 49. Model Cache - Models Database Controller Model Database
  50. 50. Model Cache - Models Database Controller Model Database Cache
  51. 51. get_file_contents Cache - Request HTTP Controller get_file_contents HTTP Controller
  52. 52. get_file_contents Cache - Request HTTP Controller get_file_contents HTTP Controller Cache
  53. 53. Cache - Reverse Proxy HTTP Servers Applications DataBase
  54. 54. Cache - Reverse Proxy HTTP Servers Applications DataBase Proxy Cache
  55. 55. Cache - Proxy reverso
  56. 56. Cache - CDNs HTTP Servers Statics files
  57. 57. Cache - CDNs HTTP Servers Statics files CDN
  58. 58. Cache - CDNs
  59. 59. FrontEnd Processos guardados e reutilizados em cada usuário.
  60. 60. Cache - HTTP Caching Browser /page Cache 200 ok Content-Length: 1024 Cache-Control: max-age=120 ETag: "x34234242" Servers /style.css /script.js /proto.jpg Cache-Control: no-cache Cache-Control: max-age:347242 Cache-Control: max-age:347242 Cache-Control: max-age:347242
  61. 61. Cache - HTTP Caching Browser /page Cache 200 ok Content-Length: 1024 Cache-Control: max-age=120 ETag: "x34234242" Servers /style.css /script.js /proto.jpg Cache-Control: no-cache Cache-Control: max-age:347242 Cache-Control: max-age:347242 Cache-Control: max-age:347242 Cache
  62. 62. Cache - HTTP Caching
  63. 63. Cache - Local Storage jquery request Server AjaxforEach Process
  64. 64. Cache - Local Storage jquery request Server AjaxforEach Process Cache
  65. 65. Local Storage Mini Banco de dados de chave e valor. ● Até 5mb de dados
  66. 66. Cache - Manifest jquery forEach Process Offline Cache
  67. 67. Manifest cache Possibilidade de guardar arquivos e informações para uso offline. - Navegação off-line: os usuários podem navegar por todo o site quando estão off-line - Velocidade: os recursos armazenados em cache são locais e, portanto, são carregados mais rapidamente. - Redução da carga do servidor: o navegador fará download do servidor apenas dos recursos que forem alterados. -
  68. 68. Manifest ➔ Planeje bem o processo de invalidação, para qualquer tipo de alteração, este deverá ser replicado no arquivo de manifesto. ➔ Criado principalmente para oferecer uma navegação offline. ➔ Entre 5 a 10mb de espaço (depende do browser).
  69. 69. 4. Concluíndo
  70. 70. Entenda como cada estilo de cache funciona, entenda como funciona sua arquitetura.
  71. 71. Atenção redobrada para o cache em sistemas distribuídos.
  72. 72. Aconselha-se a implementar o cache depois que lançar o produto.
  73. 73. Bye. felipeklerk@yahoo.com.br linkedin.com/in/felipe-klerk-signorini facebook.com/felipesignorini

×