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!

Caching

  • 1.
  • 2.
    Como é ainternet?
  • 3.
    Custo de umachamada 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çalhoHTTP - Expires - Cache-control
  • 6.
    Expires O servidor defineuma 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çãodo 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 formasde 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
  • 9.
  • 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 usarcache eficientemente para uma API REST usada nessa tela?
  • 16.