2010-04-19 13 views
7

Quando si utilizza il pipelining HTTP/1.1, cosa dice lo standard sull'emissione di più richieste senza attendere il completamento di ciascuna richiesta? Cosa fanno i server in pratica?Emissione di più richieste utilizzando il pipelining HTTP/1.1

Chiedo perché una volta ho provato a scrivere un client che emetterebbe un batch di richieste GET per più file e ricorda di ricevere errori. Non ero sicuro se fosse dovuto al fatto che emettessi in modo errato lo GET o che avessi bisogno di attendere il completamento di ogni singola richiesta prima di emettere il successivo GET.

risposta

7

Il pipelining è proprio questo: avere più di una richiesta "in volo" su una singola connessione.

Su Internet aperta, pipelining non è molto comune, perché un paio di server e degli intermediari non lo fanno bene, e le conseguenze di rovinare pipelining può essere grave (ad esempio, mescolando le risposte a due diverse utenti).

Ricordare che solo HTTP/1.1 supporta il pipelining; se hai un server HTTP/1.0 o un proxy 1.0 nel mezzo, probabilmente non funzionerà.

Inoltre, il pipelining può essere utilizzato solo su metodi "idempotent" come GET e HEAD; non è consentito per il POST, ecc

See: http://tools.ietf.org/html/draft-ietf-httpbis-p1-messaging-09#section-7.1.2.2

+0

@ Mark Nottingham: Questo è interessante, le connessioni in modo persistente da soli non sono considerati pipelining - solo emittenti lotti di richieste multiple sono considerati pipelining? –

+0

Sì. Le connessioni persistenti possono essere utilizzate in HTTP/10, con Connection: Keep-Alive (anche se ci sono alcuni piccoli problemi di interoperabilità). –

Problemi correlati