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 tipos de cache
Memória, io, no backend no frontend.
➔ Exemplos
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 front.
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
Process
Server
Cache
V1
V2
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 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
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
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 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...
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 máquina, o que pode trazer problemas para
sistemas distribuídos
➔ SSD sempre...
Cache - Memória
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)
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
/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 - 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
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 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.
-
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).
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