Canalització HTTP



La canalització HTTP és una característica d'HTTP/1.1, que permet enviar diverses sol·licituds HTTP mitjançant una única connexió TCP sense esperar les respostes corresponents. HTTP/1.1 requereix que els servidors responguin correctament a les sol·licituds canalitzades, amb respostes no canalitzades però vàlides, encara que el servidor no admeti la canalització HTTP. Malgrat aquest requisit, molts servidors HTTP/1.1 heretats no admeten la canalització correctament, cosa que obliga la majoria de clients HTTP a no utilitzar la canalització HTTP.

La tècnica va ser substituïda per la multiplexació via HTTP/2,[1] que és compatible amb la majoria dels navegadors moderns.[2]

A HTTP/3, la multiplexació s'aconsegueix mitjançant QUIC que substitueix a TCP. Això redueix encara més el temps de càrrega, ja que no hi ha cap bloqueig de cap de línia encara que es perdin alguns paquets.

Motivació i limitacions

[modifica]

La canalització de les sol·licituds dona lloc a una millora espectacular [3] en els temps de càrrega de pàgines HTML, especialment en connexions d'alta latència com les connexions a Internet per satèl·lit. L'acceleració és menys evident a les connexions de banda ampla, ja que la limitació d'HTTP 1.1 encara s'aplica: el servidor ha d'enviar les seves respostes en el mateix ordre en què es van rebre les sol·licituds, de manera que tota la connexió segueix sent el primer en entrar, primer en sortir [4] i es pot produir un bloqueig HOL.

Les operacions asíncrones d' HTTP/2 i SPDY són la solució per a això.[5] L'any 2017, la majoria dels navegadors admetien HTTP/2 de manera predeterminada, que utilitza la multiplexació.[6]

Diagrama de temps de connexió sense canalització vs

Estat d'execució

[modifica]

La canalització es va introduir a HTTP/1.1 i no estava present a HTTP/1.0.[7]

Implementació en navegadors web

[modifica]

De tots els navegadors principals, només Opera tenia una implementació totalment funcional que estava habilitat per defecte. En altres navegadors, la canalització HTTP es va desactivar o no es va implementar.[8]

  • Internet Explorer 8 no admet sol·licituds de canalització, a causa de problemes relacionats amb els servidors intermediaris amb errors i el bloqueig de cap de línia.
  • Internet Explorer 11 no admet la canalització.
  • Els navegadors Mozilla (com ara Mozilla Firefox, SeaMonkey i Camino) s'utilitzen per donar suport a la canalització; tanmateix, es va eliminar al Firefox 54. Quan era compatible, la canalització es va desactivar de manera predeterminada per evitar problemes amb els servidors que es comportaven malament. Si l'usuari va habilitar la canalització, els navegadors Mozilla utilitzaven algunes heurístiques, sobretot per desactivar la canalització per als servidors IIS de Microsoft més antics. Finalment, l'eliminació es va traslladar a SeaMonkey.
  • Konqueror 2.0 admet la canalització, però està desactivat per defecte.
  • Google Chrome anteriorment admetia la canalització, però s'ha desactivat a causa d'errors i problemes amb els servidors amb un comportament deficient.
  • Pale Moon (navegador web) admet la canalització i està activat per defecte.

Referències

[modifica]
  1. «Revision 1330814 | Connection management in HTTP/1.x | MDN» (en anglès americà). MDN Web Docs. Arxivat de l'original el 2018-03-19. [Consulta: 19 març 2018].
  2. «HTTP2 browser support» (en anglès). [Consulta: 9 març 2017].
  3. Nielsen, Henrik Frystyk. «Network Performance Effects of HTTP/1.1, CSS1, and PNG» (en anglès). World Wide Web Consortium, 24-06-1997. [Consulta: 14 gener 2010].
  4. Fielding, R.; Reschke, J. "Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing: Concurrency", 2014. DOI: 10.17487/RFC7230 [Consulta: 24 juliol 2014].
  5. Willis, Nathan. «Reducing HTTP latency with SPDY» (en anglès). LWN.net, 18-11-2009.
  6. «Revision 1330814 | Connection management in HTTP/1.x | MDN» (en anglès americà). MDN Web Docs. Arxivat de l'original el 2018-03-19. [Consulta: 19 març 2018].
  7. «Key Differences between HTTP/1.0 and HTTP/1.1» (en anglès). Arxivat de l'original el 2016-04-24. [Consulta: 16 abril 2016].
  8. Willis, Nathan. «Reducing HTTP latency with SPDY» (en anglès). LWN.net, 18-11-2009.