2010-04-19 26 views
7

Khi sử dụng HTTP/1.1 Pipelining tiêu chuẩn nói gì về việc phát hành nhiều yêu cầu mà không phải chờ từng yêu cầu hoàn thành? Máy chủ làm gì trong thực tế?Phát hành nhiều yêu cầu bằng cách sử dụng HTTP/1.1 Đường ống

Tôi hỏi vì tôi đã từng cố viết một ứng dụng khách sẽ phát hành một loạt yêu cầu GET cho nhiều tệp và nhớ có lỗi. Tôi đã không chắc chắn nếu nó là do tôi không chính xác phát hành GET 's hoặc cần phải chờ cho mỗi yêu cầu cá nhân để hoàn thành trước khi phát hành GET tiếp theo.

Trả lời

7

Đường ống chỉ là - có nhiều yêu cầu "đang bay" trên một kết nối. Trên Internet mở, pipelining không phải là rất phổ biến, bởi vì số máy chủ và trung gian không làm đúng, và hậu quả của việc rối tung lên đường ống có thể nghiêm trọng (ví dụ, trộn các phản hồi với hai khác nhau người dùng).

Hãy nhớ rằng chỉ HTTP/1.1 hỗ trợ pipelining; nếu bạn có máy chủ HTTP/1.0 hoặc proxy 1.0 ở giữa, nó có thể sẽ không hoạt động.

Ngoài ra, pipelining chỉ có thể được sử dụng trên các phương thức "idempotent" như GET và HEAD; nó không được phép cho POST vv

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

+0

@ Mark Nottingham: Đó là thú vị, kết nối rất dai dẳng tự không được coi là pipelining - chỉ phát hành lô nhiều yêu cầu được coi pipelining? –

+0

Có. Các kết nối liên tục có thể được sử dụng trong HTTP/10, với Connection: Keep-Alive (mặc dù có một vài vấn đề tương tác nhỏ ở đó). –

Các vấn đề liên quan