SlideShare una empresa de Scribd logo
1 de 94
Descargar para leer sin conexión
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

Más contenido relacionado

La actualidad más candente

Yaf - Um framework que roda sob uma extensão
Yaf - Um framework que roda sob uma extensãoYaf - Um framework que roda sob uma extensão
Yaf - Um framework que roda sob uma extensão
Thiago Paes
 

La actualidad más candente (20)

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
 
Performance em Java
Performance em JavaPerformance em Java
Performance em Java
 
Dicas para Turbinar o servidor de Aplicações JBoss 7
Dicas para Turbinar o servidor de Aplicações JBoss 7Dicas para Turbinar o servidor de Aplicações JBoss 7
Dicas para Turbinar o servidor de Aplicações JBoss 7
 
Alta Performance de Aplicações PHP com Nginx
Alta Performance de Aplicações PHP com NginxAlta Performance de Aplicações PHP com Nginx
Alta Performance de Aplicações PHP com Nginx
 
L'esprit de l'escalier
L'esprit de l'escalierL'esprit de l'escalier
L'esprit de l'escalier
 
Entregando conteúdo em ambientes extremos na JVM
Entregando conteúdo em ambientes extremos na JVMEntregando conteúdo em ambientes extremos na JVM
Entregando conteúdo em ambientes extremos na JVM
 
Escalando API's com NodeJS, Docker e RabbitMQ
Escalando API's com NodeJS, Docker e RabbitMQEscalando API's com NodeJS, Docker e RabbitMQ
Escalando API's com NodeJS, Docker e RabbitMQ
 
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
 
Monitoramento de serviços com Zabbix + Grafana + Python - Marcelo Santoto - D...
Monitoramento de serviços com Zabbix + Grafana + Python - Marcelo Santoto - D...Monitoramento de serviços com Zabbix + Grafana + Python - Marcelo Santoto - D...
Monitoramento de serviços com Zabbix + Grafana + Python - Marcelo Santoto - D...
 
Debug de cabo a rabo
Debug de cabo a raboDebug de cabo a rabo
Debug de cabo a rabo
 
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
 
Melhorando o desempenho do seu WordPress [WordCamp Porto Alegre 2015]
Melhorando o desempenho do seu WordPress [WordCamp Porto Alegre 2015]Melhorando o desempenho do seu WordPress [WordCamp Porto Alegre 2015]
Melhorando o desempenho do seu WordPress [WordCamp Porto Alegre 2015]
 
Docker Para Maiores - GDG Cabreúva
Docker Para Maiores - GDG CabreúvaDocker Para Maiores - GDG Cabreúva
Docker Para Maiores - GDG Cabreúva
 
Alta Performance de Aplicações Web em PHP - Nginx
Alta Performance de Aplicações Web em PHP - NginxAlta Performance de Aplicações Web em PHP - Nginx
Alta Performance de Aplicações Web em PHP - Nginx
 
NodeJS - Tutorial de forma simples e pratica.
NodeJS - Tutorial de forma simples e pratica.NodeJS - Tutorial de forma simples e pratica.
NodeJS - Tutorial de forma simples e pratica.
 
Yaf - Um framework que roda sob uma extensão
Yaf - Um framework que roda sob uma extensãoYaf - Um framework que roda sob uma extensão
Yaf - Um framework que roda sob uma extensão
 
NoSQL Livre
NoSQL LivreNoSQL Livre
NoSQL Livre
 
FISL11 2010 - Automação de Datacenters
FISL11 2010 - Automação de DatacentersFISL11 2010 - Automação de Datacenters
FISL11 2010 - Automação de Datacenters
 
A busca pelo deploy continuo
A busca pelo deploy continuoA busca pelo deploy continuo
A busca pelo deploy continuo
 
O bom, o mau, o vilão... e o node.js
O bom, o mau, o vilão... e o node.jsO bom, o mau, o vilão... e o node.js
O bom, o mau, o vilão... e o node.js
 

Similar a Vamos conversar sobre cache

Desenvolvendo aplicações Web escaláveis
Desenvolvendo aplicações Web escaláveisDesenvolvendo aplicações Web escaláveis
Desenvolvendo aplicações Web escaláveis
elliando dias
 
Soluções de Web Caching e Web Acceleration - Domingos Parra Novo
Soluções de Web Caching e Web Acceleration - Domingos Parra NovoSoluções de Web Caching e Web Acceleration - Domingos Parra Novo
Soluções de Web Caching e Web Acceleration - Domingos Parra Novo
Tchelinux
 
Cache e Performance (in portuguese)
Cache e Performance (in portuguese)Cache e Performance (in portuguese)
Cache e Performance (in portuguese)
Bruno Pedro
 
Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2
PrinceGuru MS
 
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
Henrique Lima
 

Similar a Vamos conversar sobre cache (20)

Desenvolvendo aplicações Web escaláveis
Desenvolvendo aplicações Web escaláveisDesenvolvendo aplicações Web escaláveis
Desenvolvendo aplicações Web escaláveis
 
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
 
Cache em aplicações web
Cache em aplicações webCache em aplicações web
Cache em aplicações web
 
Técnicas e recursos para desenvolvimento Web em cenários de grande escala
Técnicas e recursos para desenvolvimento Web em cenários de grande escalaTécnicas e recursos para desenvolvimento Web em cenários de grande escala
Técnicas e recursos para desenvolvimento Web em cenários de grande escala
 
Utilizando cache com WordPress: tenha o seu website decolando sem sair do lugar
Utilizando cache com WordPress: tenha o seu website decolando sem sair do lugarUtilizando cache com WordPress: tenha o seu website decolando sem sair do lugar
Utilizando cache com WordPress: tenha o seu website decolando sem sair do lugar
 
Web Seminário sobre Varnish+Nginx+Apache
Web Seminário sobre Varnish+Nginx+ApacheWeb Seminário sobre Varnish+Nginx+Apache
Web Seminário sobre Varnish+Nginx+Apache
 
Tuning Apache/MySQL/PHP para desenvolvedores
Tuning Apache/MySQL/PHP para desenvolvedoresTuning Apache/MySQL/PHP para desenvolvedores
Tuning Apache/MySQL/PHP para desenvolvedores
 
Melhorando o desempenho do seu WordPress
Melhorando o desempenho do seu WordPressMelhorando o desempenho do seu WordPress
Melhorando o desempenho do seu WordPress
 
Soluções de Web Caching e Web Acceleration - Domingos Parra Novo
Soluções de Web Caching e Web Acceleration - Domingos Parra NovoSoluções de Web Caching e Web Acceleration - Domingos Parra Novo
Soluções de Web Caching e Web Acceleration - Domingos Parra Novo
 
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]
 
Treinamento de Performance and tuning
Treinamento de Performance and tuningTreinamento de Performance and tuning
Treinamento de Performance and tuning
 
Overview Sobre Varnish
Overview Sobre VarnishOverview Sobre Varnish
Overview Sobre Varnish
 
Qcon 2013 - Walmart Frontend Solution using Node.js
Qcon 2013 - Walmart Frontend Solution using Node.jsQcon 2013 - Walmart Frontend Solution using Node.js
Qcon 2013 - Walmart Frontend Solution using Node.js
 
Cache e Performance (in portuguese)
Cache e Performance (in portuguese)Cache e Performance (in portuguese)
Cache e Performance (in portuguese)
 
Cache de dados com PHP
Cache de dados com PHPCache de dados com PHP
Cache de dados com PHP
 
Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2
 
Conceitos Basicos e Docker - Java Noroeste
Conceitos Basicos e Docker - Java NoroesteConceitos Basicos e Docker - Java Noroeste
Conceitos Basicos e Docker - Java Noroeste
 
Entendendo Conceitos Caching com PHP
Entendendo Conceitos Caching com PHPEntendendo Conceitos Caching com PHP
Entendendo Conceitos Caching com PHP
 
Tutorial memcached
Tutorial memcachedTutorial memcached
Tutorial memcached
 
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
 

Vamos conversar sobre cache