O documento discute o conceito de cache e como ele pode ser usado para melhorar o desempenho de APIs REST. Ele explica que o cache armazena cópias locais de respostas HTTP para reduzir custos de processamento e tempo de resposta, e que cabeçalhos como Expires e Cache-Control controlam a validade do cache. Também lista diferentes tipos de cache como no browser, proxy, gateway e aplicação.
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
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
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