Confronto di collegamento fra una pipelining e una connessione non-pipelining
L'HTTP pipelining è una tecnica in cui vengono inviate più richieste HTTP su una singola connessione TCP senza aspettare le risposte corrispondenti.[1]
L'adozione del pipelining delle richieste HTTP comporta un significativo miglioramento[2] nella velocità di caricamento delle pagine HTML, in particolare nel caso di connessioni ad alta latenza come nel caso delle connessioni satellitari.
Poiché è generalmente possibile inserire più richieste HTTP nello stesso segmento TCP, il pipelining HTTP consente di inviare e ricevere sulla rete meno pacchetti, riducendone quindi il carico.
Metodi non idempotenti come POST non dovrebbero subire pipelining, mentre sequenze di GET ed HEAD possono sempre avvantaggiarsi di questa tecnica. Una sequenza di altre richieste come GET, HEAD, PUT e DELETE possono o non possono sfruttare il pipelining a seconda del fatto che ogni richiesta dipenda o meno dall'effetto delle altre.[3]
Per poter essere attuato il pipelining HTTP necessita il supporto sia lato client che lato server.
I server che implementano il protocollo HTTP/1.1 devono supportare il pipelining, il che non significa che debbano rispondere alle richieste in pipelining, ma quantomeno non devono dare errori qualora in client invii richieste di questo tipo.
Implementare il pipelining in un server web è relativamente semplice, basta assicurarsi che non ci siano flussi di rete scartati tra richieste successive. Per questa ragione gran parte dei server web attualmente supporta il pipelining senza alcun problema.
Tra tutti i principali browser web, solo Opera presenta un'implementazione pienamente funzionale ed abilitata di default del pipelining. In tutti gli altri browser il pipelining è disabilitato o non implementato.[4]
Internet Explorer 8 non effettua il pipeline delle richieste a causa di timori riguardanti proxy malfunzionanti e blocchi head of line (HOL).[5]
I browser Mozilla (come Mozilla Firefox, SeaMonkey and Camino (browser)) supportano il pipelining, che è però disabilitato come impostazione predefinita.[6][7] Il pipelining è disabilitato per evitare eventuali problemi con server malconfigurati.[8] Quando il pipelining è abilitato i browser Mozilla sfruttano analisi euristiche per disattivarlo qualora si visitino vecchi server IIS.[9]
Konqueror 2.0 supporta il pipelining, ma è disabilitato di default.[senza fonte]
Google Chrome non supporta il pipelining nelle sue versioni stabili (fino alla versione 17), ma la versione 18 beta introduce il pipelining per il protocollo http (non per l'https) come opzione[10], mentre in Chromium è abilitato come impostazione preimpostata[11])
^(EN) Gary Mark, HTTP Pipelining In Google Chrome, su browserfame.com, 20 ottobre 2011. URL consultato il 20 ottobre 2011 (archiviato dall'url originale il 26 ottobre 2011).
^(EN) Mark Nottingham, The State of Proxy Caching, su mnot.net, 20 giugno 2007. URL consultato il 16 maggio 2009.