Выдача нескольких запросов с использованием HTTP / 1.1 Pipelining - PullRequest
7 голосов
/ 19 апреля 2010

При использовании HTTP / 1.1 Pipelining что стандарт говорит о выдаче нескольких запросов, не дожидаясь завершения каждого запроса? Что серверы делают на практике?

Я спрашиваю, потому что когда-то пытался написать клиент, который бы выполнил пакет из GET запросов на несколько файлов и запомнил ошибки. Я не был уверен, что это из-за того, что я неправильно выдал GET или мне нужно было дождаться окончания каждого отдельного запроса, прежде чем выдать следующий GET.

1 Ответ

7 голосов
/ 30 апреля 2010

Конвейерная обработка - это просто - наличие более одного запроса «в полете» по одному соединению.

В открытом Интернете конвейеризация не очень распространена, потому что несколько серверов и посредников не понимают этого правильно, и последствия путаницы в конвейере могут быть серьезными (например, путаница ответов двум разным пользователям).

Имейте в виду, что только HTTP / 1.1 поддерживает конвейеризацию; если у вас есть сервер HTTP / 1.0 или прокси-сервер 1.0 в середине, он, вероятно, не будет работать.

Кроме того, конвейерная обработка может использоваться только на «идемпотентных» методах, таких как GET и HEAD; это не разрешено для POST и т. д.

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

...