2012-05-07 15 views
49

Nhờ Google và Stack Overflow, tôi nghĩ rằng tôi đã hiểu sự khác biệt giữa HTTP pipelining và HTTP multiplexing thông thường (ví dụ, với SPDY), vì vậy tôi đã tạo biểu đồ dưới đây để hiển thị sự khác biệt giữa pipelining và ghép kênh dựa trên ba yêu cầu HTTP thông thường.Sự khác nhau giữa HTTP pipeling và ghép kênh HTTP với SPDY

enter image description here

hai câu hỏi của tôi là:

  1. là hình ảnh chính xác?
  2. Có đúng là nếu pipelining không có head-of-line blocking problem, nó sẽ nhanh như ghép kênh HTTP? Hoặc tôi đã bỏ lỡ một sự khác biệt bổ sung?

Trả lời

47

Không đúng, nhưng có một khía cạnh quan trọng mà nó bỏ qua. HTTP yêu cầu bạn phân phối toàn bộ phản hồi trước khi bất kỳ yêu cầu nào khác có thể tiến hành. Những gì bạn đang hiển thị trong biểu đồ là chính xác theo nghĩa là với SPDY, chúng tôi cuối cùng có thể phá vỡ yêu cầu "đầu dòng" và cung cấp các phản hồi khi chúng có sẵn. Tuy nhiên, chúng tôi cũng không phải đợi bất kỳ yêu cầu nào hoàn thành.

Hãy tưởng tượng hai yêu cầu, cả kích thước của một vài kb: mỗi yêu cầu sẽ có nhiều gói, gọi cho chúng là [r1p1, r1p2][r2p1, r2p2]. HTTP yêu cầu pN đến đúng thứ tự. SPDY, mặt khác cho phép chúng tôi như sau: [r2p1, r1p1, r1p2, r2p2]. Cũng cần lưu ý rằng với SPDY chúng ta có thể sử dụng các ưu tiên yêu cầu để gợi ý máy chủ yêu cầu nên được ưu tiên, ngay cả khi nó đến sau trên dây (trong số nửa tá các tính năng tuyệt vời khác).

+0

@Matt bạn +1 câu trả lời *, vì câu hỏi * chứa biểu đồ tuyệt vời? Hoặc có thể bạn chỉ đính kèm bình luận của bạn sai ... –

+0

Yup, đính kèm bình luận không chính xác. – Matt

+1

Còn câu hỏi thứ 2 thì sao? > Có đúng là nếu pipelining không có vấn đề chặn đầu dòng thì nó sẽ nhanh như ghép kênh HTTP? Hoặc tôi đã bỏ lỡ một sự khác biệt bổ sung? – CMCDragonkai