2012-05-07 15 views
49

Dzięki Google i Stack Overflow, myślę, że rozumiem różnicę między regularnym przesyłaniem strumieniowym HTTP a multipleksowaniem HTTP (np. Z SPDY), więc wykonałem poniższy diagram, aby pokazać różnice między potokowanie i multipleksowanie w oparciu o trzy zwykłe żądania HTTP.Różnica między pipetowaniem HTTP a multipleksowaniem HTTP za pomocą SPDY

enter image description here

moje dwa pytania:

  1. Czy obraz jest poprawny?
  2. Czy to prawda, że ​​gdyby instalacja potoku nie miała numeru head-of-line blocking problem, byłaby tak szybka jak multipleksowanie HTTP? A może brakowało mi dodatkowej różnicy?

Odpowiedz

47

Nie jest niepoprawny, ale jest ważny aspekt, który pomija. HTTP wymaga dostarczenia pełnej odpowiedzi , zanim możliwe będzie kontynuowanie dowolnego innego żądania. To, co pokazujesz na diagramie, jest poprawne w tym sensie, że dzięki SPDY możemy wreszcie złamać wymaganie "head of line" i dostarczyć odpowiedzi, gdy tylko będą dostępne. Jednak nie musimy też czekać na żadną prośbę o pełne wypełnienie.

Wyobraź sobie dwie prośby, obie o wielkości kilku kb: każde żądanie będzie zawierało wiele pakietów, wywołaj je [r1p1, r1p2] i [r2p1, r2p2]. HTTP wymaga, aby pN przybywały w dokładnej kolejności. SPDY z drugiej strony pozwala nam na następujące: [r2p1, r1p1, r1p2, r2p2].

Warto również wspomnieć, że z SPDY możemy użyć priorytetów zapytań, aby wskazać serwerowi, które wnioski powinny mieć pierwszeństwo, nawet jeśli pojawi się później na drucie (wśród kilku innych wspaniałych funkcji).

+0

@Matt you + 1ed the * answer *, ponieważ * pytanie * zawierało niesamowity diagram? A może źle podałeś swój komentarz ... –

+0

Yup, niepoprawnie załączony komentarz. – Matt

+1

Co z drugim pytaniem? > Czy prawdą jest, że gdyby pipelining nie miał problemu z blokowaniem linii, byłby tak szybki jak multipleksowanie HTTP? A może brakowało mi dodatkowej różnicy? – CMCDragonkai

Powiązane problemy