Scott Tiger Tech Blog

Blog technologiczny firmy Scott Tiger S.A.

SPDY: dopalacz HTTP

Autor: Piotr Karpiuk o środa 24. Sierpień 2011

Google zaproponował rozszerzenie protokołu HTTP przyspieszające ładowanie stron WWW nawet o 50%.

Łącza internetowe stają się coraz szybsze, ale pozostaje problem dużych opóźnień. Jest on dodatkowo pogłębiany przez protokół HTTP, który został zaprojektowany kilkanaście lat temu i coraz gorzej pasuje do współczesnych wymagań. Główne zarzuty w tym kontekście:

  • Jest to protokół zapytanie/odpowiedź, pojedyncza realizacja zlecenia blokuje całe połączenie TCP nawet na kilkaset milisekund nie pozwalając na równoległą realizację innych zleceń (np. dociągnięcie obrazków); aby przyspieszyć, przeglądarki otwierają kilka połączeń TCP (np. 6).
  • Serwer może wysłać klientowi dane tylko w odpowiedzi na zapytanie klienta.
  • Sekcja nagłówków w każdym komunikacie HTTP (w tym ciasteczka i praktycznie niezmienne nagłówki takie jak User-Agent, Host czy Accept*) stanowią często znaczną część każdego komunikatu HTTP (od 200 bajtów do 2KB).
  • Kompresja i szyfrowanie danych są opcjonalne.

Google zaimplementował w swojej przeglądarce i używa w swoich usługach (Google Search, GMail, Google Docs) rozszerzenie HTTP o nazwie SPDY.

Na czym polega zmiana na lepsze?

  • Można współbieżnie realizować dowolnie wiele zleceń HTTP w obrębie jednego połączenia TCP.
  • Nagłówki są kompresowane (co zmniejsza ich rozmiar nawet o 85%), a redundantne nagłówki nie są w ogóle przesyłane.
  • Serwer może inicjować komunikację z klientem wypychając do niego dane jeśli zajdzie taka potrzeba (nagłówki X-AssociatedContent i X-Subresources, przy czym ten drugi jest sugestią dla klienta, że powinien poprosić o dodatkowe zasoby).
  • Klient może przypisać priorytety swoim żądaniom, aby poprawić doznania użytkownika gdy wąskim gardłem jest przepustowość sieci.
  • Strumień komunikatów jest szyfrowany (SSL).
  • Aby móc skorzystać z usprawnienia, należy zmienić implementację przesyłania pakietów HTTP przez serwer WWW i przeglądarkę, ale nie jest konieczna zmiana kodu istniejących aplikacji webowych ani po stronie serwera, ani klienta. W szczególności, nie ulega zmianie format komunikatów HTTP GET ani HTTP POST.

Mozilla wyraziła zainteresowanie pomysłem Google’a i zaimplementowała jego obsługę w jednej ze swoich łatek Firefoksa. Dostępne są już implementacje serwerów WWW dla różnych języków programowania (Python, Java, Ruby), a także stosowny moduł do Apache (mod-spdy).

Share and Enjoy:
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • Śledzik
  • Blip
  • Blogger.com
  • Gadu-Gadu Live
  • LinkedIn
  • MySpace
  • Wykop

Zostaw komentarz

XHTML: Możesz użyć następujących tagów: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>