Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Abusando nas requisições HTTP sem medo

lfcipriani
November 25, 2011

Abusando nas requisições HTTP sem medo

Nas arquiteturas REST, sempre há a preocupação com o volume de requisições HTTP, que pode gerar muita carga nos servidores. Porém, essa questão pode ser facilmente resolvida se o sistema implementar uma boa estratégia de HTTP caching. A apresentação irá mostrar de forma simples como o funciona o "menosprezado" protocolo de cache do HTTP.

lfcipriani

November 25, 2011
Tweet

Other Decks in Technology

Transcript

  1. Abusando nas requisições HTTP sem medo Luís Cipriani @lfcipriani (twitter,

    linkedin, github, ...) 20o. GURU (2011-11-26) sábado, 26 de novembro de 11
  2. Motivação “REST implica fazer VÁRIAS requisições HTTP, isso é muito

    ruim, não escala, bla bla bla...” http://www.youtube.com/watch?v=8FpigqfcvlM sábado, 26 de novembro de 11
  3. Motivação Shut UP! Não pense assim! VÁRIAS pessoas já resolveram

    esse problema de VÁRIAS formas diferentes. http://www.youtube.com/watch?v=8FpigqfcvlM sábado, 26 de novembro de 11
  4. http cache BENEFÍCIOS • reduz banda de rede • reduz

    latência • reduz carga nos servidores • esconde falhas na rede sábado, 26 de novembro de 11
  5. http cache FLUXO 1. posso cachear? 2. se cacheado, está

    fresco? 3. se expirado, está válido no servidor? 4. alguma outra coisa que preciso saber? 11+15 cachear: (v.) armazenar em um cache sábado, 26 de novembro de 11
  6. http cache 1. POSSO CACHEAR? 1. localmente significa um cache

    que atende apenas a aplicação cliente (consumer) 2. essas diretivas sobrescrevem qualquer configuração de qualquer cache 3. por default, pode-se cachear requisições não seguras/autenticadas, GET e HEAD e aquelas com status code 200, 203, 206, 300, 301, 410 10 +11 diretiva do cache-control posso cachear localmente? posso cachear em qualquer lugar? devo revalidar em cada request mesmo estando fresco? no-store não não n/a private sim não não no-cache sim sim sim public sim sim não sábado, 26 de novembro de 11
  7. o ideal é que o server sempre diga o tempo

    de expiração de uma resposta: Expires: [RFC 1123 date] Cache-Control: max-age=600 se ele não fizer isso, o cache pode atribuir heuristicamente o tempo de expiração http cache 2. SE CACHEADO, ESTÁ FRESCO? 9 +10 sábado, 26 de novembro de 11
  8. http cache 2. SE CACHEADO, ESTÁ FRESCO? 7 +10 Cálculo

    da idade (Age) sábado, 26 de novembro de 11
  9. http cache 2. SE CACHEADO, ESTÁ FRESCO? 7 + 7

    freshness_lifetime = | | Expires - Date Cache-Control: max-age response_is_fresh = freshness_lifetime > Age sábado, 26 de novembro de 11
  10. http cache 3. SE EXPIROU, VALIDE 3 + 7 Last-Modified

    Validadores ETag If-Modified-Since If-None-Match Condicionais if conditional request == false 304 Not Modified “... só me mande um recurso atualizado se [condicional] aplicar no [validador] ...” sábado, 26 de novembro de 11
  11. http cache 3.1. CONTROLANDO REVALIDAÇÃO 2 + 6 Cache-Control: no-cache

    + Pragma: no-cache Cache-Control: max-age=0 Cache-Control: only-if-cached pelo cliente sábado, 26 de novembro de 11
  12. http cache 3.1. CONTROLANDO REVALIDAÇÃO 2 + 4 pelo origin

    server Cache-Control: must-revalidate Cache-Control: proxy-revalidate Cache-Control: no-cache after stale always sábado, 26 de novembro de 11
  13. http cache 4. O QUE MAIS PRECISO SABER? Vary Warning

    Cache-Control: no-transform Cache-Control: extensions Cache-Control: stale-if-error Cache-Control: stale-while-revalidate 0 + 0 faz parte da chave no cache resposta expirada, revalidação com falha, idade avançada (mais de 24 horas) não permite transformações no recurso por exemplo, channels disponibilidade sobre consistência revalidação em background sábado, 26 de novembro de 11
  14. http cache DICAS 0 + 0 1. usar URLs de

    forma consistente 2. biblioteca comum de imagens 3. use o cache para imagens e páginas com baixa frequência de modificação 4. faça o cache atualizar os seus recursos modificados 5. não altere arquivos desnecessariamente 6. use cookies só quando necessário 7. minimize o uso de SSL 8. valide sua estratégia no REDbot.org roubado descaradamente de http://www.mnot.net/cache_docs/#TIPS sábado, 26 de novembro de 11
  15. http cache REFERÊNCIAS 0 + 0 1. http://en.wikipedia.org/wiki/Web_cache 2. http://www.mnot.net/cache_docs/

    3. http://redbot.org/ 4. http://www.mnot.net/blog/2008/01/04/cache_channels 5. https://github.com/abril/cachebag sábado, 26 de novembro de 11