29
@helmed CACHE EM SERVIÇOS REST COM JAX-RS Friday, April 26, 13

Cache em serviços rest com java (jax-rs)

Embed Size (px)

DESCRIPTION

Web no seu dia a dia é 100% velocidade de resposta. Usuários odeiam esperar, ficamos frustrados enquanto vídeos, páginas e suas imagens são carregadas lentamente. É uma (má) experiência aos usuários! Na verdade algo chocante. Sendo desenvolvedor web, um de suas primeiras ferramentas para ganho de banda no server-side assim como no client-side são os princípios de HTTP Caching. O tempo investido na otimização de sites vale a pena, então vamos mergulhar nisto!!

Citation preview

Page 1: Cache em serviços rest com java (jax-rs)

@helmed

CACHEEM SERVIÇOS REST

COM JAX-RS

Friday, April 26, 13

Page 2: Cache em serviços rest com java (jax-rs)

tópicos 5

HTTP����������� ������������������  CAching

1cabeçalhosHTTP����������� ������������������  cache����������� ������������������  

2requisições����������� ������������������  condicionais

3

REST����������� ������������������  em����������� ������������������  JAVA����������� ������������������  usando����������� ������������������  

jersey4

Cacheando����������� ������������������  JSON

5

Friday, April 26, 13

Page 3: Cache em serviços rest com java (jax-rs)

como assim?precisamos����������� ������������������  aumentar����������� ������������������  a����������� ������������������  performance����������� ������������������  das����������� ������������������  aplicações����������� ������������������  assim����������� ������������������  como����������� ������������������  a����������� ������������������  UX

HTTP����������� ������������������  CAching

1

aumentar o tempo de resposta reduz

requisições aos

servidores

usabilidade fluída

Friday, April 26, 13

Page 4: Cache em serviços rest com java (jax-rs)

bom...talvezmau����������� ������������������  uso����������� ������������������  pode����������� ������������������  dar����������� ������������������  muita����������� ������������������  dor����������� ������������������  de����������� ������������������  cabeça

HTTP����������� ������������������  CAching

1

dados desatualizados

time to market

difícil debugar

Friday, April 26, 13

Page 5: Cache em serviços rest com java (jax-rs)

CACHE HTTPespecificação����������� ������������������  universalmente����������� ������������������  implementada����������� ������������������  pelos����������� ������������������  browsers

HTTP����������� ������������������  CAching

1

Friday, April 26, 13

Page 6: Cache em serviços rest com java (jax-rs)

HTTP����������� ������������������  CAching

1

Browser����������� ������������������  do����������� ������������������  Cliente

Servidor����������� ������������������  Web

request

response(com����������� ������������������  os����������� ������������������  cabeçalhos����������� ������������������  dedicados����������� ������������������  a����������� ������������������  cache)armazena����������� ������������������  para����������� ������������������  

posterior����������� ������������������  uso

CACHE����������� ������������������  DO����������� ������������������  BROWSER

PRIMEIRA REQUISIÇÃO

Friday, April 26, 13

Page 7: Cache em serviços rest com java (jax-rs)

HTTP����������� ������������������  CAching

1

PRIMEIRA REQUISIÇÃOpara����������� ������������������  a����������� ������������������  imagem����������� ������������������  ico-mobile.png

Friday, April 26, 13

Page 8: Cache em serviços rest com java (jax-rs)

HTTP����������� ������������������  CAching

1

Browser����������� ������������������  do����������� ������������������  Cliente

Servidor����������� ������������������  Web

usa����������� ������������������  o����������� ������������������  cache����������� ������������������  do����������� ������������������  browser

CACHE����������� ������������������  DO����������� ������������������  BROWSER

REQUISIÇÃO CACHEADAo����������� ������������������  conteúdo����������� ������������������  está����������� ������������������  cacheado����������� ������������������  e����������� ������������������  não����������� ������������������  está����������� ������������������  expirado?

Friday, April 26, 13

Page 9: Cache em serviços rest com java (jax-rs)

HTTP����������� ������������������  CAching

1

REQUISIÇÃO CACHEADApara����������� ������������������  a����������� ������������������  imagem����������� ������������������  ico-mobile.png����������� ������������������  -����������� ������������������  não����������� ������������������  é����������� ������������������  nem����������� ������������������  buscada����������� ������������������  antes����������� ������������������  que����������� ������������������  acabe����������� ������������������  o����������� ������������������  cache

Friday, April 26, 13

Page 10: Cache em serviços rest com java (jax-rs)

como fazer?precisamos����������� ������������������  utilizar����������� ������������������  os����������� ������������������  cabeçalhos����������� ������������������  corretos����������� ������������������  ����������� ������������������  para����������� ������������������  que����������� ������������������  todos����������� ������������������  sigam����������� ������������������  a����������� ������������������  especificação

cache-control

last-modified

expires

ETag

cabeçalhosHTTP����������� ������������������  cache����������� ������������������  

2

Friday, April 26, 13

Page 11: Cache em serviços rest com java (jax-rs)

cabeçalhosHTTP����������� ������������������  cache����������� ������������������  

2

Expirespossuía����������� ������������������  limitações����������� ������������������  considerando����������� ������������������  redes����������� ������������������  e����������� ������������������  servidores����������� ������������������  intermediários����������� ������������������  de����������� ������������������  cache

Hypertext Transfer Protocol -- HTTP/1.0

Friday, April 26, 13

Page 12: Cache em serviços rest com java (jax-rs)

cabeçalhosHTTP����������� ������������������  cache����������� ������������������  

2

Cache-Controlevolução����������� ������������������  para����������� ������������������  detalhamento����������� ������������������  de����������� ������������������  como����������� ������������������  lidar����������� ������������������  com����������� ������������������  cache.

public

privatemax-age

no-cache

no-store

no-transform

s-maxage

Hypertext Transfer Protocol -- HTTP/1.1

Friday, April 26, 13

Page 13: Cache em serviços rest com java (jax-rs)

cabeçalhosHTTP����������� ������������������  cache����������� ������������������  

2

Cache-ControlIndica����������� ������������������  que����������� ������������������  a����������� ������������������  resposta����������� ������������������  pode����������� ������������������  ser����������� ������������������  armazenada����������� ������������������  em����������� ������������������  cache����������� ������������������  por����������� ������������������  qualquer����������� ������������������  

servidor����������� ������������������  de����������� ������������������  cache����������� ������������������  intermediário����������� ������������������  a����������� ������������������  requisiçãopublic

Hypertext Transfer Protocol -- HTTP/1.1

Friday, April 26, 13

Page 14: Cache em serviços rest com java (jax-rs)

cabeçalhosHTTP����������� ������������������  cache����������� ������������������  

2

Cache-Controlindica����������� ������������������  que����������� ������������������  a����������� ������������������  totalidade����������� ������������������  ou����������� ������������������  parte����������� ������������������  da����������� ������������������  mensagem����������� ������������������  de����������� ������������������  resposta����������� ������������������  é����������� ������������������  destinado����������� ������������������  a����������� ������������������  

um����������� ������������������  único����������� ������������������  usuário����������� ������������������  e����������� ������������������  não����������� ������������������  deve����������� ������������������  ser����������� ������������������  armazenada����������� ������������������  em����������� ������������������  cache

Hypertext Transfer Protocol -- HTTP/1.1

private

Friday, April 26, 13

Page 15: Cache em serviços rest com java (jax-rs)

cabeçalhosHTTP����������� ������������������  cache����������� ������������������  

2

Cache-Controldefine����������� ������������������  a����������� ������������������  expectativa����������� ������������������  de����������� ������������������  vida����������� ������������������  do����������� ������������������  recurso.����������� ������������������  Uma����������� ������������������  resposta����������� ������������������  é����������� ������������������  obsoleto����������� ������������������  se����������� ������������������  sua����������� ������������������  idade����������� ������������������  atual����������� ������������������  é����������� ������������������  maior����������� ������������������  do����������� ������������������  que����������� ������������������  o����������� ������������������  valor����������� ������������������  dado����������� ������������������  (em����������� ������������������  segundos)����������� ������������������  no����������� ������������������  momento����������� ������������������  de����������� ������������������  

um����������� ������������������  novo����������� ������������������  pedido����������� ������������������  para����������� ������������������  esse����������� ������������������  recurso.

Hypertext Transfer Protocol -- HTTP/1.1

max-age

Friday, April 26, 13

Page 16: Cache em serviços rest com java (jax-rs)

cabeçalhosHTTP����������� ������������������  cache����������� ������������������  

2

Cache-ControlDefine����������� ������������������  a����������� ������������������  expectativa����������� ������������������  de����������� ������������������  vida����������� ������������������  do����������� ������������������  recurso����������� ������������������  em����������� ������������������  servidores����������� ������������������  de����������� ������������������  proxy����������� ������������������  cache.����������� ������������������  Quando����������� ������������������  o����������� ������������������  objeto����������� ������������������  for����������� ������������������  

obsoleto����������� ������������������  ao����������� ������������������  browser����������� ������������������  do����������� ������������������  cliente,����������� ������������������  um����������� ������������������  proxy����������� ������������������  cache����������� ������������������  deve����������� ������������������  primeiro����������� ������������������  validá-lo����������� ������������������  contra����������� ������������������  sua����������� ������������������  ����������� ������������������  expectativa����������� ������������������  de����������� ������������������  vida����������� ������������������  para����������� ������������������  o����������� ������������������  objeto,����������� ������������������  antes����������� ������������������  de����������� ������������������  passar����������� ������������������  uma����������� ������������������  requisição����������� ������������������  ao����������� ������������������  origin����������� ������������������  server.

Hypertext Transfer Protocol -- HTTP/1.1

s-maxage

Friday, April 26, 13

Page 17: Cache em serviços rest com java (jax-rs)

cabeçalhosHTTP����������� ������������������  cache����������� ������������������  

2

Cache-ControlDefine����������� ������������������  que����������� ������������������  um����������� ������������������  recurso����������� ������������������  não����������� ������������������  seja����������� ������������������  substituído����������� ������������������  em����������� ������������������  servidores����������� ������������������  intermediários.����������� ������������������  Proxy����������� ������������������  caches����������� ������������������  intermediários,����������� ������������������  podem����������� ������������������  utilizar����������� ������������������  estratégias����������� ������������������  de����������� ������������������  substituição,����������� ������������������  como����������� ������������������  em����������� ������������������  casos����������� ������������������  de����������� ������������������  imagens����������� ������������������  

em����������� ������������������  que����������� ������������������  pode����������� ������������������  ser����������� ������������������  guardada����������� ������������������  uma����������� ������������������  imagem����������� ������������������  com����������� ������������������  resolução����������� ������������������  menor.

Hypertext Transfer Protocol -- HTTP/1.1

no-transform

Friday, April 26, 13

Page 18: Cache em serviços rest com java (jax-rs)

cabeçalhosHTTP����������� ������������������  cache����������� ������������������  

2

Cache-ControlSe����������� ������������������  no-cache����������� ������������������  não����������� ������������������  especificar����������� ������������������  um����������� ������������������  campo,����������� ������������������  então����������� ������������������  os����������� ������������������  servidores����������� ������������������  de����������� ������������������  cache����������� ������������������  não����������� ������������������  devem����������� ������������������  usar����������� ������������������  a����������� ������������������  resposta����������� ������������������  para����������� ������������������  satisfazer����������� ������������������  uma����������� ������������������  nova����������� ������������������  requisição.Se����������� ������������������  a����������� ������������������  no-cache����������� ������������������  especificar����������� ������������������  um����������� ������������������  ou����������� ������������������  mais����������� ������������������  ����������� ������������������  campos,����������� ������������������  então����������� ������������������  um����������� ������������������  cache����������� ������������������  pode����������� ������������������  usar����������� ������������������  a����������� ������������������  resposta����������� ������������������  para����������� ������������������  satisfazer����������� ������������������  um����������� ������������������  pedido����������� ������������������  subsequente,����������� ������������������  sujeito����������� ������������������  a����������� ������������������  quaisquer����������� ������������������  

outras����������� ������������������  restrições����������� ������������������  ao����������� ������������������  cache.

Hypertext Transfer Protocol -- HTTP/1.1

no-cache

Friday, April 26, 13

Page 19: Cache em serviços rest com java (jax-rs)

cabeçalhosHTTP����������� ������������������  cache����������� ������������������  

2

Cache-Control"Não����������� ������������������  devem����������� ������������������  armazenar"����������� ������������������  .����������� ������������������  Os����������� ������������������  caches����������� ������������������  não����������� ������������������  pode����������� ������������������  intencionalmente����������� ������������������  armazenar����������� ������������������  as����������� ������������������  

informações����������� ������������������  de����������� ������������������  armazenamento����������� ������������������  não-volátil,����������� ������������������  e����������� ������������������  deve����������� ������������������  fazer����������� ������������������  uma����������� ������������������  tentativa����������� ������������������  de����������� ������������������  melhor����������� ������������������  esforço����������� ������������������  para����������� ������������������  remover����������� ������������������  as����������� ������������������  informações����������� ������������������  de����������� ������������������  armazenamento����������� ������������������  volátil����������� ������������������  com����������� ������������������  a����������� ������������������  maior����������� ������������������  

brevidade����������� ������������������  possível����������� ������������������  após����������� ������������������  encaminhá-lo.

Hypertext Transfer Protocol -- HTTP/1.1

no-store

Friday, April 26, 13

Page 20: Cache em serviços rest com java (jax-rs)

houve alteração?precisamos����������� ������������������  reduzir����������� ������������������  o����������� ������������������  escopo����������� ������������������  da����������� ������������������  requisição����������� ������������������  para����������� ������������������  conferência����������� ������������������  para����������� ������������������  manter����������� ������������������  a����������� ������������������  conferência����������� ������������������  constante

last-modified

ETag

requisições����������� ������������������  condicionais

3

Friday, April 26, 13

Page 21: Cache em serviços rest com java (jax-rs)

requisições����������� ������������������  condicionais

3

baseado em tempogarante����������� ������������������  que����������� ������������������  requisições����������� ������������������  só����������� ������������������  serão����������� ������������������  enviadas����������� ������������������  quando����������� ������������������  os����������� ������������������  dados����������� ������������������  tiverem����������� ������������������  sido����������� ������������������  alterados

last-modified

If-Modified-Since

Friday, April 26, 13

Page 22: Cache em serviços rest com java (jax-rs)

requisições����������� ������������������  condicionais

3

Browser����������� ������������������  do����������� ������������������  Cliente

Servidor����������� ������������������  Web

Servidor����������� ������������������  Cache

request request

responseresponse(com����������� ������������������  os����������� ������������������  cabeçalhos����������� ������������������  dedicados����������� ������������������  a����������� ������������������  cache)armazena����������� ������������������  para����������� ������������������  

posterior����������� ������������������  uso

CACHE����������� ������������������  DO����������� ������������������  BROWSER

CACHE����������� ������������������  DO����������� ������������������  servidor

Cache-Control����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  max-age=20,����������� ������������������  s-maxage=20last-modified����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  Thu,����������� ������������������  18����������� ������������������  Apr����������� ������������������  2013����������� ������������������  09:20:14����������� ������������������  GMT

If-Modified-Since����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  Thu,����������� ������������������  18����������� ������������������  Apr����������� ������������������  2013����������� ������������������  09:20:14����������� ������������������  GMT

Friday, April 26, 13

Page 23: Cache em serviços rest com java (jax-rs)

requisições����������� ������������������  condicionais

3

baseado em conteúdotambém����������� ������������������  garante����������� ������������������  a����������� ������������������  conferência����������� ������������������  baseada����������� ������������������  em����������� ������������������  uma����������� ������������������  HASHMD5

ETag

If-None-Match

Friday, April 26, 13

Page 24: Cache em serviços rest com java (jax-rs)

requisições����������� ������������������  condicionais

3

Browser����������� ������������������  do����������� ������������������  Cliente

Servidor����������� ������������������  Web

Servidor����������� ������������������  Cache

request request

responseresponse(com����������� ������������������  os����������� ������������������  cabeçalhos����������� ������������������  dedicados����������� ������������������  a����������� ������������������  cache)armazena����������� ������������������  para����������� ������������������  

posterior����������� ������������������  uso

CACHE����������� ������������������  DO����������� ������������������  BROWSER

CACHE����������� ������������������  DO����������� ������������������  servidor

Cache-Control����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  max-age=20,����������� ������������������  s-maxage=20ETag����������� ������������������  ����������� ������������������  ����������� ������������������  15f0fff99ed5aaa44asd79as7dsa8sda

If-None-Match����������� ������������������  ����������� ������������������  ����������� ������������������  15f0fff99ed5aaa44asd79as7dsa8sda

Friday, April 26, 13

Page 25: Cache em serviços rest com java (jax-rs)

CONFIGURANDO WEB.xml

REST����������� ������������������  em����������� ������������������  JAVA����������� ������������������  usando����������� ������������������  

jersey4

Friday, April 26, 13

Page 26: Cache em serviços rest com java (jax-rs)

REST����������� ������������������  em����������� ������������������  JAVA����������� ������������������  usando����������� ������������������  

jersey4

DEFININDO OS PATHS

Friday, April 26, 13

Page 27: Cache em serviços rest com java (jax-rs)

DEFININDO CABEÇALHOS

Cacheando����������� ������������������  JSON

5

Friday, April 26, 13

Page 28: Cache em serviços rest com java (jax-rs)

Cacheando����������� ������������������  JSON

5

DEFININDO CABEÇALHOS

Friday, April 26, 13

Page 29: Cache em serviços rest com java (jax-rs)

Cacheando����������� ������������������  JSON

5

DEFININDO CABEÇALHOS

Friday, April 26, 13