Jakiś czas temu pojawił się HTTP/2 jako nowość i innowacje w świecie Internetu ale ta innowacja wymaga przynajmniej nowszego systemu niż Windows XP 🙂
HTTP/2 jest największym krokiem w rozwoju HTTP (Hypertext Transfer Protocol) od 1999 roku, gdy zaadaptowano protokół z numerkiem 1.1. Upłynęło już 16 lat i nowy (przyszły) standard zawiera naprawdę wiele udoskonaleń oraz zmian. Jakich? HTTP/2 wprowadza zmiany obejmujące prędkość wczytywania stron internetowych, dłuższe połączenia czy push dla serwerów.
http://www.komputerswiat.pl
O co chodzi w tym ? Cloudflare to przedstawia za pomocą ilustracji:
HTTP/2 jest w teorii szybsze od SPDY o nawet 50%, ponadto sam HTTP/2 nie wymaga stosowania certyfikatu SSL co go znacznie różni od HTTP/2 nie mniej jednak na tę chwilę SSL jest wymagany ze względu na to że przeglądarki póki co wyłącznie taka konfiguracje wspierają.
Postaram się przedstawić kilka różnic pomiędzy HTTP/2 oraz SPDY:
SPDY | HTTP/2 |
SSL jest wymagany. Każde połączenie w tym protokole musi być szyfrowane. | SSL Nie jest wymagany. ale– na tę chwile wszystkie przeglądarki wymagają posiadania SSL’a. |
Szybkie połączenia. Nie uzywane jednak jest titaj rozszeżenie ALPN | Szybsze połączenia!. Dzięki zastosowaniu ALPN |
Single-Host Multiplexing (Multiplex dla pojedynczego hosta) – Multiplexing może zachodzić w połączeniu do jednego hosta w jednym czase. | Multi-Host Multiplexing (Multiplex dla wielu hostów) |
Kompresja danych | Szybsza i bardziej bezpieczna kompresja! HTTP/2 wprowadza HPACK, co powoduje zmniejszenia “nagłówków” w zapytanaich. |
Propryteryzacja zapytań. | Ulepszona propryteryzacja. Pozwala ddecydowac przeglądarce jakie elementy maja miec wyższy priorytet. |
Jak wspomniałem na początku wpisu, szkoda pozbawiać się jeszcze aktywnego protokołu kiedy na prawdę wielu użytkowników używa starszej wersji oprogramowania na swoich smartfonach/komputerach co może skutkować problematycznym działaniem przy uruchomionym wyłącznie protokole HTTP/2, jako ze dwa protokoły nie moga siłą rzeczy działać jednocześnie – istnieje sposób aby to ominąć i tutaj należą się podziękowania dla firmy Cloudflare za udostępnienie swojego Patcha do serwera NGINX który umożliwia prace z HTTP/2 oraz SPDY.
Zbudowałem paczki dla systemów Debian 8 / Ubuntu 14.04 / Ubuntu 15.10 oraz Ubuntu 16.04 dla AMD64.
W samych paczkach dołączam moduły dla NGINX:
|
|
Debian 8:
apt-get update && apt-get install fontconfig-config fonts-dejavu-core libfontconfig \ libgd3 libjbig0 liblua5.1-0 libperl5.20 libtiff5 libxpm4 libxslt1.1 \ libpython-stdlib libpython2.7-minimal libpython2.7-stdlib \ python python-minimal python2.7 python2.7-minimal \ fcgiwrap ssl-cert libossp-uuid16 -y
wget http://kompilacje.linuxiarz.pl/Debian_8/nginx-linuxiarz.pl-HTTP2%2BSPDY/nginx-common_1.9.100-linuxiarz.pl_all.deb wget http://kompilacje.linuxiarz.pl/Debian_8/nginx-linuxiarz.pl-HTTP2%2BSPDY/nginx-doc_1.9.100-linuxiarz.pl_all.deb wget http://kompilacje.linuxiarz.pl/Debian_8/nginx-linuxiarz.pl-HTTP2%2BSPDY/nginx-extras_1.9.100-linuxiarz.pl_amd64.deb wget http://kompilacje.linuxiarz.pl/Debian_8/nginx-linuxiarz.pl-HTTP2%2BSPDY/nginx_1.9.100-linuxiarz.pl_all.deb dpkg -i *
Ubuntu 14.04:
apt-get update && apt-get install fontconfig-config fonts-dejavu-core libfontconfig \ libgd3 libjbig0 liblua5.1-0 libperl5.18 libtiff5 libxpm4 libxslt1.1 \ libpython-stdlib libpython2.7-minimal libpython2.7-stdlib \ python python-minimal python2.7 python2.7-minimal \ fcgiwrap ssl-cert libossp-uuid16 -y
wget http://kompilacje.linuxiarz.pl/Ubuntu%2014.04%20LTS/nginx-linuxiarz.pl-HTTP2%2BSPDY/nginx-common_1.9.100-linuxiarz.pl_all.deb wget http://kompilacje.linuxiarz.pl/Ubuntu%2014.04%20LTS/nginx-linuxiarz.pl-HTTP2%2BSPDY/nginx-doc_1.9.100-linuxiarz.pl_all.deb wget http://kompilacje.linuxiarz.pl/Ubuntu%2014.04%20LTS/nginx-linuxiarz.pl-HTTP2%2BSPDY/nginx-extras_1.9.100-linuxiarz.pl_amd64.deb wget http://kompilacje.linuxiarz.pl/Ubuntu%2014.04%20LTS/nginx-linuxiarz.pl-HTTP2%2BSPDY/nginx_1.9.100-linuxiarz.pl_all.deb dpkg -i *
Ubuntu 15.10:
apt-get update && apt-get install fontconfig-config fonts-dejavu-core libfontconfig \ libgd3 libjbig0 liblua5.1-0 libperl5.22 libtiff5 libxpm4 libxslt1.1 \ libpython-stdlib libpython2.7-minimal libpython2.7-stdlib \ python python-minimal python2.7 python2.7-minimal \ fcgiwrap ssl-cert libossp-uuid16 libluajit-5.1-2 libluajit-5.1-common -y
wget http://kompilacje.linuxiarz.pl/Ubuntu_15.10/nginx-linuxiarz.pl-HTTP2%2BSPDY/nginx-common_1.9.100-linuxiarz.pl_all.deb wget http://kompilacje.linuxiarz.pl/Ubuntu_15.10/nginx-linuxiarz.pl-HTTP2%2BSPDY/nginx-doc_1.9.100-linuxiarz.pl_all.deb wget http://kompilacje.linuxiarz.pl/Ubuntu_15.10/nginx-linuxiarz.pl-HTTP2%2BSPDY/nginx-extras_1.9.100-linuxiarz.pl_amd64.deb wget http://kompilacje.linuxiarz.pl/Ubuntu_15.10/nginx-linuxiarz.pl-HTTP2%2BSPDY/nginx_1.9.100-linuxiarz.pl_all.deb dpkg -i *
Ubuntu 16.04:
apt-get update && apt-get install fontconfig-config fonts-dejavu-core libfontconfig \ libgd3 libjbig0 liblua5.1-0 libtiff5 libxpm4 libxslt1.1 \ libpython-stdlib libpython2.7-minimal libpython2.7-stdlib \ python python-minimal python2.7 python2.7-minimal \ fcgiwrap ssl-cert libossp-uuid16 libperl5.22 -y
wget http://kompilacje.linuxiarz.pl/Ubuntu_16.04_LTS/nginx-linuxiarz.pl-HTTP2%2BSPDY/nginx-common_1.100.10-linuxiarz.pl_all.deb wget http://kompilacje.linuxiarz.pl/Ubuntu_16.04_LTS/nginx-linuxiarz.pl-HTTP2%2BSPDY/nginx-doc_1.100.10-linuxiarz.pl_all.deb wget http://kompilacje.linuxiarz.pl/Ubuntu_16.04_LTS/nginx-linuxiarz.pl-HTTP2%2BSPDY/nginx-extras_1.100.10-linuxiarz.pl_amd64.deb wget http://kompilacje.linuxiarz.pl/Ubuntu_16.04_LTS/nginx-linuxiarz.pl-HTTP2%2BSPDY/nginx_1.100.10-linuxiarz.pl_all.deb dpkg -i *