SlideShare une entreprise Scribd logo
1  sur  16
Télécharger pour lire hors ligne
Caching
https://github.com/marceloserpa
https://twitter.com/_marceloserpa
https://www.linkedin.com/in/marceloserpa
Marcelo Serpa
Desenvolvedor de Software
Como é a internet?
Custo de uma chamada HTTP
O que é cache?
- Cria uma cópia local do resultado de uma chamada HTTP
- Reduz custo de processamento e round-trips necessário para buscar um
recurso
- Ideal para operações idempotentes
Como funciona?
Via cabeçalho HTTP
- Expires
- Cache-control
Expires
O servidor define uma data de validade para a resposta.
$ curl -X GET -I localhost:8080/product/v1/products/1
HTTP/1.1 200
Expires: Seg, 21 jan 2019 23:56:36 BRST
Content-Type: application/json;charset=UTF-8
Transfer-Encoding: chunked
Date: Mon, 22 Jan 2018 01:56:36 GMT
Cache-control
É uma evolução do Expires possui mais controle sobre o ciclo de vida do cache
$ curl -X GET -I localhost:8080/product/v1/products/1
HTTP/1.1 200
Cache-Control: max-age=604800, private
Content-Type: application/json;charset=UTF-8
Transfer-Encoding: chunked
Date: Mon, 22 Jan 2018 02:26:18 GMT
Validação
Existem duas formas de revalidar uma resposta: ETAGs e Last-Modified
$ curl -X GET -I localhost:8080/product/v1/products/1
HTTP/1.1 200
Last-Modified: Mon, 09 Jan 2017 10:30:20 GMT
ETag: "fa858e16-461b-4ff3-bf2e-74b4c4557b36"
Content-Type: application/json;charset=UTF-8
Transfer-Encoding: chunked
Date: Mon, 22 Jan 2018 02:32:29 GMT
Política de
armazenamento com
Cache-Control
Tipos de cache
- Browser
- Proxy
- Gateway
- Aplicação
Tipos de cache - Browser
- Browser implementa a especificação de cache HTTP
- Cliente pode limpar o cache
- Cache referente apenas à um usuário
- chrome://view-http-cache
Tipos de cache - Proxy
- Cache compartilhado
- Cache referente apenas à vários usuários
- Evitar usar com informações sensíveis
- Sem controle
Tipos de cache - Gateway
- Responsável pelo cache fica na frente da aplicação
- Pode fazer balanceamento de carga
- Mais fácil de controlar
- Pode-se usar NGINX ou Apache para fazer
proxy-reverso
Tipos de cache - Aplicação
- Aplicação controla
- In-memory: Redis e Memcached
- Cache em arquivo
- Memoization
Como poderíamos usar cache
eficientemente para uma API REST
usada nessa tela?
Obrigado!

Contenu connexe

Tendances

Alta perfomance de aplicações PHP com Nginx
Alta perfomance de aplicações PHP com NginxAlta perfomance de aplicações PHP com Nginx
Alta perfomance de aplicações PHP com Nginx
Thiago Paes
 
Automatizar backup no pf sense [dica]
Automatizar backup no pf sense [dica]Automatizar backup no pf sense [dica]
Automatizar backup no pf sense [dica]
João Augusto
 
T03_LM3: Javascript (2013-2014)
T03_LM3: Javascript (2013-2014)T03_LM3: Javascript (2013-2014)
T03_LM3: Javascript (2013-2014)
Carlos Santos
 
Cache e Performance (in portuguese)
Cache e Performance (in portuguese)Cache e Performance (in portuguese)
Cache e Performance (in portuguese)
Bruno Pedro
 
Implementação de Servidor Linux Ubuntu Server
Implementação de Servidor Linux Ubuntu ServerImplementação de Servidor Linux Ubuntu Server
Implementação de Servidor Linux Ubuntu Server
Tiago Bezerra Dos Santos
 

Tendances (19)

Alta perfomance de aplicações PHP com Nginx
Alta perfomance de aplicações PHP com NginxAlta perfomance de aplicações PHP com Nginx
Alta perfomance de aplicações PHP com Nginx
 
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
 
Automatizar backup no pf sense [dica]
Automatizar backup no pf sense [dica]Automatizar backup no pf sense [dica]
Automatizar backup no pf sense [dica]
 
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
 
Zabbix Conference LatAm 2016 - Andre Deo - SNMP and Zabbix
Zabbix Conference LatAm 2016 - Andre Deo - SNMP and ZabbixZabbix Conference LatAm 2016 - Andre Deo - SNMP and Zabbix
Zabbix Conference LatAm 2016 - Andre Deo - SNMP and Zabbix
 
Slides nginx
Slides nginxSlides nginx
Slides nginx
 
Node slide
Node slideNode slide
Node slide
 
T03_LM3: Javascript (2013-2014)
T03_LM3: Javascript (2013-2014)T03_LM3: Javascript (2013-2014)
T03_LM3: Javascript (2013-2014)
 
Cache e Performance (in portuguese)
Cache e Performance (in portuguese)Cache e Performance (in portuguese)
Cache e Performance (in portuguese)
 
Talk at QConSP
Talk at QConSPTalk at QConSP
Talk at QConSP
 
UserParameter vs Zabbix Sender - 1º ZABBIX MEETUP DO INTERIOR-SP
UserParameter vs Zabbix Sender - 1º ZABBIX MEETUP DO INTERIOR-SPUserParameter vs Zabbix Sender - 1º ZABBIX MEETUP DO INTERIOR-SP
UserParameter vs Zabbix Sender - 1º ZABBIX MEETUP DO INTERIOR-SP
 
NGiNX, o motor da sua aplicação web
NGiNX, o motor da sua aplicação webNGiNX, o motor da sua aplicação web
NGiNX, o motor da sua aplicação web
 
Copa do mundo no brasil interagindo com os torcedores em tempo real
Copa do mundo no brasil   interagindo com os torcedores em tempo realCopa do mundo no brasil   interagindo com os torcedores em tempo real
Copa do mundo no brasil interagindo com os torcedores em tempo real
 
Implementação de Servidor Linux Ubuntu Server
Implementação de Servidor Linux Ubuntu ServerImplementação de Servidor Linux Ubuntu Server
Implementação de Servidor Linux Ubuntu Server
 
03 estrategia-ddos
03 estrategia-ddos03 estrategia-ddos
03 estrategia-ddos
 
Kerberos e OpenLDAP: Ambiente SSO OpenSource
Kerberos e OpenLDAP: Ambiente SSO OpenSourceKerberos e OpenLDAP: Ambiente SSO OpenSource
Kerberos e OpenLDAP: Ambiente SSO OpenSource
 
De A a Zabbix Devry Metrocamp
De A a Zabbix Devry MetrocampDe A a Zabbix Devry Metrocamp
De A a Zabbix Devry Metrocamp
 
Memcached
MemcachedMemcached
Memcached
 
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
 

Similaire à Caching

Cache, Concorrência e Sincronização.
Cache, Concorrência e Sincronização.Cache, Concorrência e Sincronização.
Cache, Concorrência e Sincronização.
Thiago Rondon
 
(A04 e A05) LabMM3 - JavaScript
(A04 e A05) LabMM3 - JavaScript(A04 e A05) LabMM3 - JavaScript
(A04 e A05) LabMM3 - JavaScript
Carlos Santos
 
LabMM3 - Aula teórica 04
LabMM3 - Aula teórica 04LabMM3 - Aula teórica 04
LabMM3 - Aula teórica 04
Carlos Santos
 
Aumente a performance de seu site
Aumente a performance de seu siteAumente a performance de seu site
Aumente a performance de seu site
Henrique Lima
 
Hyper Text Transfer Protocol (HTTP)
Hyper Text Transfer Protocol (HTTP)Hyper Text Transfer Protocol (HTTP)
Hyper Text Transfer Protocol (HTTP)
elliando dias
 

Similaire à Caching (20)

Cache em aplicações web
Cache em aplicações webCache em aplicações web
Cache em aplicações web
 
Como o HTTP/2 vai mudar sua vida
Como o HTTP/2 vai mudar sua vidaComo o HTTP/2 vai mudar sua vida
Como o HTTP/2 vai mudar sua vida
 
Cache, Concorrência e Sincronização.
Cache, Concorrência e Sincronização.Cache, Concorrência e Sincronização.
Cache, Concorrência e Sincronização.
 
(A04 e A05) LabMM3 - JavaScript
(A04 e A05) LabMM3 - JavaScript(A04 e A05) LabMM3 - JavaScript
(A04 e A05) LabMM3 - JavaScript
 
Cacti
CactiCacti
Cacti
 
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
 
Performance Tuning de Clusters Plone - PyConBrasil 2 (2006)
Performance Tuning de Clusters Plone - PyConBrasil 2 (2006)Performance Tuning de Clusters Plone - PyConBrasil 2 (2006)
Performance Tuning de Clusters Plone - PyConBrasil 2 (2006)
 
OWASP AppSec 2010 BRAZIL Information Extraction Art of Testing Network Periph...
OWASP AppSec 2010 BRAZIL Information Extraction Art of Testing Network Periph...OWASP AppSec 2010 BRAZIL Information Extraction Art of Testing Network Periph...
OWASP AppSec 2010 BRAZIL Information Extraction Art of Testing Network Periph...
 
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
 
Otimizacao de websites em PHP
Otimizacao de websites em PHPOtimizacao de websites em PHP
Otimizacao de websites em PHP
 
PHP Jedi - Boas Práticas e Alta Performance
PHP Jedi - Boas Práticas e Alta PerformancePHP Jedi - Boas Práticas e Alta Performance
PHP Jedi - Boas Práticas e Alta Performance
 
LabMM3 - Aula teórica 04
LabMM3 - Aula teórica 04LabMM3 - Aula teórica 04
LabMM3 - Aula teórica 04
 
Cakephp 2.0 - O que mudou
Cakephp 2.0 - O que mudouCakephp 2.0 - O que mudou
Cakephp 2.0 - O que mudou
 
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
 
Aumente a performance de seu site
Aumente a performance de seu siteAumente a performance de seu site
Aumente a performance de seu site
 
Como criar infraestrutura de sites para receber milhões de usuários?
Como criar infraestrutura de sites para receber milhões de usuários?Como criar infraestrutura de sites para receber milhões de usuários?
Como criar infraestrutura de sites para receber milhões de usuários?
 
Hyper Text Transfer Protocol (HTTP)
Hyper Text Transfer Protocol (HTTP)Hyper Text Transfer Protocol (HTTP)
Hyper Text Transfer Protocol (HTTP)
 
Como definir a quantidade de workers para sua aplicação
Como definir a quantidade de workers para sua aplicaçãoComo definir a quantidade de workers para sua aplicação
Como definir a quantidade de workers para sua aplicação
 
gRPC: Por que você ainda usa REST?
gRPC: Por que você ainda usa REST?gRPC: Por que você ainda usa REST?
gRPC: Por que você ainda usa REST?
 
Escalabilidade em Aplicações - Fisl13
Escalabilidade em Aplicações - Fisl13Escalabilidade em Aplicações - Fisl13
Escalabilidade em Aplicações - Fisl13
 

Plus de Marcelo Serpa (13)

AWS Organizations
AWS OrganizationsAWS Organizations
AWS Organizations
 
Web 3.0 - The Future of Web
Web 3.0 - The Future of WebWeb 3.0 - The Future of Web
Web 3.0 - The Future of Web
 
Frontend Track NodeJS
Frontend Track NodeJSFrontend Track NodeJS
Frontend Track NodeJS
 
Netty training
Netty trainingNetty training
Netty training
 
Terraform
TerraformTerraform
Terraform
 
Cqrs
CqrsCqrs
Cqrs
 
Microservices
MicroservicesMicroservices
Microservices
 
Defenda seus consumidores
Defenda seus consumidoresDefenda seus consumidores
Defenda seus consumidores
 
Service discovery with Eureka and Spring Cloud
Service discovery with Eureka and Spring CloudService discovery with Eureka and Spring Cloud
Service discovery with Eureka and Spring Cloud
 
Acessando apis com feign e hystrix
Acessando apis com feign e hystrixAcessando apis com feign e hystrix
Acessando apis com feign e hystrix
 
No core do node js - entendendo como a plataforma trabalha
No core do node js  - entendendo como a plataforma trabalhaNo core do node js  - entendendo como a plataforma trabalha
No core do node js - entendendo como a plataforma trabalha
 
Componentizacao com ReactJs
Componentizacao com ReactJsComponentizacao com ReactJs
Componentizacao com ReactJs
 
Clean code
Clean codeClean code
Clean code
 

Caching

  • 2. Como é a internet?
  • 3. Custo de uma chamada HTTP
  • 4. O que é cache? - Cria uma cópia local do resultado de uma chamada HTTP - Reduz custo de processamento e round-trips necessário para buscar um recurso - Ideal para operações idempotentes
  • 5. Como funciona? Via cabeçalho HTTP - Expires - Cache-control
  • 6. Expires O servidor define uma data de validade para a resposta. $ curl -X GET -I localhost:8080/product/v1/products/1 HTTP/1.1 200 Expires: Seg, 21 jan 2019 23:56:36 BRST Content-Type: application/json;charset=UTF-8 Transfer-Encoding: chunked Date: Mon, 22 Jan 2018 01:56:36 GMT
  • 7. Cache-control É uma evolução do Expires possui mais controle sobre o ciclo de vida do cache $ curl -X GET -I localhost:8080/product/v1/products/1 HTTP/1.1 200 Cache-Control: max-age=604800, private Content-Type: application/json;charset=UTF-8 Transfer-Encoding: chunked Date: Mon, 22 Jan 2018 02:26:18 GMT
  • 8. Validação Existem duas formas de revalidar uma resposta: ETAGs e Last-Modified $ curl -X GET -I localhost:8080/product/v1/products/1 HTTP/1.1 200 Last-Modified: Mon, 09 Jan 2017 10:30:20 GMT ETag: "fa858e16-461b-4ff3-bf2e-74b4c4557b36" Content-Type: application/json;charset=UTF-8 Transfer-Encoding: chunked Date: Mon, 22 Jan 2018 02:32:29 GMT
  • 10. Tipos de cache - Browser - Proxy - Gateway - Aplicação
  • 11. Tipos de cache - Browser - Browser implementa a especificação de cache HTTP - Cliente pode limpar o cache - Cache referente apenas à um usuário - chrome://view-http-cache
  • 12. Tipos de cache - Proxy - Cache compartilhado - Cache referente apenas à vários usuários - Evitar usar com informações sensíveis - Sem controle
  • 13. Tipos de cache - Gateway - Responsável pelo cache fica na frente da aplicação - Pode fazer balanceamento de carga - Mais fácil de controlar - Pode-se usar NGINX ou Apache para fazer proxy-reverso
  • 14. Tipos de cache - Aplicação - Aplicação controla - In-memory: Redis e Memcached - Cache em arquivo - Memoization
  • 15. Como poderíamos usar cache eficientemente para uma API REST usada nessa tela?