Druga wersja protokołu HTTP, czyli HTTP/2 jest już z nami od jakiegoś czasu, jednak wciąż mało się o niej mówi i póki co wciąż bazuje się na optymalizacji pod HTTP/1, no i nie bez powodu ponieważ mało kto korzysta z dwójki.
Pomyślałem że zrobie temat żeby zainteresować ludzi którzy albo nie słyszeli jeszcze o nim, albo nie doczytali co tak na prawdę zmienia jego wprowadzenie i jakie niesie konsekwencje w sposobie tworzenia stron internetowych.
HTTP2 will mean a change in how we should build websites. The best practices of HTTP1 are harmful in a HTTP2 world.
https://blog.cloudflare.com/http-2-for-web-developers/
Powyższy artykuł bardzo dobrze wyjaśnia w skrócie o co tutaj właściwie chodzi. Podsumowując:
- Nie łącz plików css, js w jeden plik - wyodrębniaj poszczególne funkcjonalności do następnych plików
- Nie korzystaj ze sprite'ów
- Mniejsza liczba zapytań HTTP =/= szybszy czas załadowania strony
- Inline css, inline javascript w pliku html to złe rozwiązania ( co do css - niektórzy korzystali z programu który z pliku css robi inline css )
Co do zalet HTTP/2:
- Wiele plików może zostać wysłanych podczas jednego połączenia TCP
- Kompresja nagłówków
- Tzw. Server push - serwer może wysyłać pliki których klient nie zażądał
- Możliwość ustawienia priorytetu wysyłania
To tylko w skrócie wymienione zmiany, więcej doczytacie w linkach które tutaj podaje.
Nginx zrobił artykuł o między innymi testowaniu http2 na serwerze
https://www.nginx.com/wp-content/uploads/2015/09/NGINX_HTTP2_White_Paper_v4.pdf
Porównanie w praktyce
Sprawdźcie demo z załadowaniem obrazka:
https://http2.akamai.com/demo
Można też zauważyć subdomenę http2 w adresie linka, nie jest to bez powodu, ponieważ póki co tak określa się przesyłanie danych przez tą wersje protokołu.
Moje osobiste testy:
http://http2.loadimpact.com/
Na tej stronie możecie porównać czas załadowania, sam zrobiłem z ciekawości na trzech z moich stron, oto wyniki:
http://scr.hu/8z2f/7qus0
http://scr.hu/8z2f/lxm3z
http://scr.hu/8z2f/trysr
Jak widać, nie wygląda to na korzyść HTTP/2, ale podejrzewam że to przez moje praktyki związane z HTTP/1. Testowane strony to nie statyczne wizytówki.
Aby sprawdzić jakiej wersji http używa serwer, możecie użyć komendy:
curl --head example.com
Na koniec link do specki dla dociekliwych:
http2.github.io/http2-spec/
Skomentujcie, co myślicie o nowej wersji oraz na kiedy rokujecie jej wejście w życie na dobre