factograf
HU
Sign in

HTTP pipelining

HTTP pipelining

A HTTP pipelining vagy HTTP-adatcsatornázás technikájával több HTTP-kérés küldhető egyetlen TCP-kapcsolaton keresztül anélkül, hogy meg kellene várni az egyes kérések válaszüzeneteit.

A kérések csatornázása drámai javulást hozhat a HTML-oldalak betöltésében, különösen nagy késleltetésű, például műholdas internetkapcsolatnál. Széles sávú internetnél azonban a gyorsulás kisebb mértékben jelentkezik, mivel a HTTP 1.1 szerint a kiszolgálónak szigorúan a kérések sorrendjében kell a válaszüzeneteket elküldenie, így sor eleji blokkolás (Head-of-line blocking) léphet fel. Ebben a problémában a születőben lévő HTTP 2.0, illetve a Google által fejlesztett SPDY protokoll aszinkron működése jelenthet előrelépést.

Mivel általában több HTTP-kérés elfér ugyanabban a TCP-csomagban, a HTTP pipelining alkalmazásával kevesebb TCP-csomagot kell a hálózatra kiküldeni, csökkentve a hálózati terhelést.

A nem idempotens metódusokat, mint a POST nem ajánlott beletenni az adatcsatornába. A GET és HEAD metódusok mindig csatornázhatók. Idempotens kérések szekvenciáját (pl. GET, HEAD, PUT és DELETE) attól függően lehet vagy nem lehet adatcsatornázni, hogy a szekvenciában szereplő kérések együtt értelmezve idempotensek-e.

A HTTP pipelining működéséhez a kliensnek és a szervernek is támogatnia kell azt. A HTTP/1.1-nek megfelelő szerverek kötelezően támogatják a pipeliningot. Ez nem jelenti azt, hogy feltétlenül csatornázniuk is kell a válaszokat, csak annyit, hogy hibamentesen le kell kezelniük, ha a kliens csatornázott kéréssel fordul feléjük.

Elterjedése

A HTTP Pipelining a HTTP/1.1 előtti verziókban nem támogatott.

Implementációja webszerverekben

A webkiszolgálókban a HTTP-adatcsatornázás viszonylag egyszerűen megvalósítható; szinte csak annyi kell hozzá, hogy a hálózati pufferek ne legyenek eldobva az egyes HTTP-kérések között. Ebből kifolyólag a legtöbb modern webkiszolgáló problémamentesen kezeli a pipeliningot.

Implementációja webböngészőkben

Az elterjedtebb böngészők közül egyedül az Operában található működő és alapértelmezetten bekapcsolt megvalósítás. A többi böngésző vagy nem is tartalmazza a HTTP pipeliningot, vagy kikapcsolt állapotban található bennük.

  • Az Internet Explorer 8 nem csatornázza a kéréseket, az esetleges hibás proxymegvalósítások és a sor eleji blokkolás elkerülése érdekében.
  • A Mozilla által kiadott böngészők (mint a Mozilla Firefox, a SeaMonkey és a Camino) támogatják a pipeliningot, de alaphelyzetben ki van kapcsolva. A kikapcsolás oka a hibásan működő kiszolgálókkal való problémák elkerülése. Ha engedélyezve van a beállítás, a Mozilla böngészői különböző heurisztikákat alkalmaznak, például kikapcsolják a pipeliningot a régebbi IIS szerverek elérésénél.
  • A Google Chrome a stabil verzióban (a 18-as verziótól kezdve) támogatja a pipeliningot http (de nem https) kapcsolatoknál, de ez alaphelyzetben ki van kapcsolva. Alapértelmezésben a 20-as verzióban tervezik bekapcsolni a pipeliningot.

Implementációja webes proxykban

A legtöbb HTTP-proxy nem támogatja a kimenő kérések adatcsatornázását.

A Squid egyes verziói hajlandók legfeljebb két kimenő HTTP-kérés csatornázására. Ez alaphelyzetben ki van kapcsolva „sávszélesség-kezelési és hozzáférés-naplózási okokból”. A Squid egyébként támogatja a kliensek felől érkező egyidejű kéréseket.

A Polipo proxy (utolsó verzió: 2010) teljes mértékben támogatja a HTTP pipeliningot.

Egyéb implementációi

A World Wide Web Consortium által kiadott libwww programkönyvtár az 1997. február 18-án kiadott 5.1 verziótól kezdve támogatja a HTTP-adatcsatornázást. Természetesen az utódjának tekintett cURL is implementálja azt.

Egyéb alkalmazásfejlesztői könyvtárak, amelyek támogatják a HTTP pipeliningot:

  • Perl modulok, amelyek klienstámogatást nyújtanak: a HTTP::Async és az LWPng (libwww-perl New Generation) programkönyvtár.
  • Az Apache Foundation HttpComponents projektje támogatja a pipeliningot a HttpCore NIO extensionsben.
  • A Microsoft.Net Framework 3.5 támogatja a HTTP pipeliningot System.Net.HttpWebRequest moduljában.
  • A Qt 4.4-ben bevezetett QNetworkRequest osztály támogatja a HTTP Pipeliningot.

Néhány más, HTTP-adatcsatornázást támogató alkalmazás:

  • phttpget (a FreeBSD minimalista HTTP-kliensprogramja)
  • libcurl
  • portsnap (a FreeBSD ports tree kódelosztó rendszere)
  • Advanced Packaging Tool
  • A Subversion opcionálisan támogatja a HTTP pipeliningot a serf WebDAV access module-lal (az alapból használt neon nem támogatja ezt).
  • a Microsoft Message Queuing Windows Server 2003 alatt alapértelmezetten használja a pipeliningot HTTP esetében, és beállítható HTTPS-hez is.
  • Az IBM CICS 3.1 támogatja a HTTP pipeliningot kliensében.
  • A Pipelined::HttpClient egy C++ kliensoldali programkönyvtár, ami pipeliningot alkalmaz.

A Multipart XHR egy szerveroldali szkripteléssel megtámogatott, tisztán Javascriptben implementált pipeline-megoldás.

A HTTP-adatcsatornázás tesztelését támogató eszközök közé tartoznak:

  • httperf

Kapcsolódó szócikkek

Fordítás

  • Ez a szócikk részben vagy egészben a HTTP pipelining című angol Wikipédia-szócikk ezen változatának fordításán alapul. Az eredeti cikk szerkesztőit annak laptörténete sorolja fel. Ez a jelzés csupán a megfogalmazás eredetét és a szerzői jogokat jelzi, nem szolgál a cikkben szereplő információk forrásmegjelöléseként.

Read next

In 13 languages

Text from Wikipedia, CC BY-SA 4.0 · Source article