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

HTTP - passado, presente e o futuro

fernahh
July 11, 2015

HTTP - passado, presente e o futuro

Talk sobre o principal protocolo da web, o HTTP. Um pouco sobre a sua história, como funciona e as novas features do HTTP/2.

Foi apresentada no dia 11 de Julho, no FISL16.

fernahh

July 11, 2015
Tweet

More Decks by fernahh

Other Decks in Technology

Transcript

  1. HTTP/1.1 GET: requisita um objeto ao servidor. POST: escreve um

    objeto no servidor. PUT: escreve um objeto no servidor respeitando a idempotência. DELETE: remove um objeto no servidor.
  2. HTTP/1.1 > Multiplos hosts Com HTTP1.1 podemos abrir de 4

    a 8 conexões por origem (depende do browser).
  3. 1990 HTML Elemento <img> 1993 1994 CSS 1995 JavaScript no

    caso mais simples, já temos 4 requisições e 4 processamentos do servidor. ou seja, a web começou a evoluir!
  4. Mas o homem sempre evolui em situações difíceis... Concatenamos assets

    (imagens, css e js) Compactamos assets (gzip, minificação, etc) Usamos múltiplos hostnames
  5. Mas o homem sempre evolui em situações difíceis... Concatenamos assets

    (imagens, css e js) Compactamos assets (gzip, minificação, etc) Usamos múltiplos hostnames Otimização de requisições Diminuição de tráfego Paralelização de requisições
  6. SPDY O tempo de carregamento de sua página pode cair

    mais de 40%, dependendo da situação.
  7. Compressão automática > o que muda - GZIP é padrão

    obrigatório; - Headers são binários e comprimidos.
  8. Compressão automática > exemplo de header HTTP/1.1 HTTP/1.1 200 OK

    Content-Type: text/html; charset=utf-8 Transfer-Encoding: chunked Connection: keep-alive Status: 200 OK X-UA-Compatible: IE=Edge,chrome=1 ETag: "4618f5c69dfa0ee8cb492830482c0bbe" Cache-Control: max-age=0, private, must-revalidate Set-Cookie: _organicadigital_session=BAh7B0kiD3Nlc3Npb25f…. Date: Sat, 21 Mar 2015 19:23:51 GMT Server: nginx/1.6.0 + Phusion Passenger 4.0.42 <!DOCTYPE html>...
  9. Compressão automática > exemplo de header HTTP/2 0010101010101010101 01010101 010101010100

    0101010101 01010101101 010101010 ?T?%.?JI?;1?R,1?T?.?[mŚ???,1? Q?_?*f0 ?{{?un?T?%.?JI?;1?R,1?T?.?[mŚ???,1? Q? _?*f0?{{?un,1?T?.?[mŚ?T?%??????????0
  10. Compressão automática > exemplo de header HTTP/2 0010101010101010101 01010101 010101010100

    0101010101 01010101101 010101010 ?T?%.?JI?;1?R,1?T?.?[mŚ???,1? Q?_?*f0 ?{{?un?T?%.?JI?;1?R,1?T?.?[mŚ???,1? Q? _?*f0?{{?un,1?T?.?[mŚ?T?%??????????0 Binário GZIP
  11. Compressão automática > exemplo de header HTTP/2 ?T?%.?JI?;1?R,1?T JI?;1?R,1?T ?,%JI?;1?R,1?T

    1?R,1?T???m, ;T?un,1?TU ?R,1??R,1?m1R ?T?%.?JI?;1?R,1?T?.?[mŚ???,1? Q?_?*f0 ?{{?un?T?%.?JI?;1?R,1?T?.?[mŚ???,1? Q? _?*f0?{{?un,1?T?.?[mŚ?T?%??????????0 HPACK GZIP
  12. Compressão automática > exemplo de header HTTP/2 ????????????????? ?????????? ????????????????

    ??????????? ?????????? ????????????? ????????????????????????????????????? ???????????????????????????????????????? ?????????????????????????????????????? Ah sim, temos HTTPS! X
  13. 0010101010101010101 01010101 010101010100 0101010101 01010101101 010101010 ?T?%.?JI?;1?R,1?T?.?[mŚ???,1? Q?_?*f0 ?{{?un?T?%.?JI?;1?R,1?T?.?[mŚ???,1? Q?

    _?*f0?{{?un,1?T?.?[mŚ?T?%??????????0 HTTP/1.1 200 OK Content-Type: text/html; charset=utf-8 Transfer-Encoding: chunked Connection: keep-alive Status: 200 OK X-UA-Compatible: IE=Edge,chrome=1 ETag: "4618f5c69dfa0ee8cb492830482c0bbe" Cache-Control: max-age=0, private, must-revalidate Set-Cookie: _organicadigital_session=BAh7B0kiD3Nlc3Npb25f…. Date: Sat, 21 Mar 2015 19:23:51 GMT Server: nginx/1.6.0 + Phusion Passenger 4.0.42 <!DOCTYPE html>...
  14. Multiplexing > o que muda - Requisições e respostas são

    paralelas; - Ou seja, mais de uma requisição por conexão.
  15. Concatenamos assets (imagens, css e js) Compactamos assets (gzip, minificação,

    etc) Usamos múltiplos hostnames Otimização de requisições Diminuição de tráfego Paralelização de requisições
  16. Priorização de requisições > o que muda - Poderemos priorizar

    recursos; - Escolhemos o que o usuário verá por primeiro.
  17. Priorização de requisições > o que muda 1º GET /index.html

    3º GET /main.js 2º GET /main.css A prioridade do CSS é maior!
  18. Concatenamos assets (imagens, css e js) Compactamos assets (gzip, minificação,

    etc) Usamos múltiplos hostnames Otimização de requisições Diminuição de tráfego Paralelização de requisições
  19. Server Push > o que muda - O servidor poderá

    enviar recursos para o cliente; - Adeus gambiarras.
  20. Concatenamos assets (imagens, css e js) Compactamos assets (gzip, minificação,

    etc) Usamos múltiplos hostnames Otimização de requisições Diminuição de tráfego Paralelização de requisições
  21. HTTP/2 > No back-end Módulos para Apache Módulos para ngnix

    Jetty e Netty (Java) Servidores http/2 para NodeJS, Ruby, ... Implementações: https://github.com/http2/http2-spec/wiki/Implementations
  22. Obrigado! Luiz Fernando Rodrigues http://blog.fernahh.com.br Referências: - http://blog.caelum.com.br/as-fantasticas-novidades-do-http-2-0-e-do- spdy/ -

    http://pt.slideshare.net/caelumdev/http2-spdy-e-otimizaes-web-front-in- macei-2014-srgio-lopes7 - https://mattwilcox.net/web-development/http2-for-front-end-web- developers - https://http2.github.io/