Šta je HTTP/2 i HTTP/3 i zašto su važni

Evolucija HTTP protokola
HTTP odnosno Hypertext Transfer Protocol je osnova komunikacije na webu. Razumijevanje protokola je važno za izbor pravog hostinga. Svaki put kada otvorite web stranicu, vaš pregledač šalje HTTP zahtjev serveru koji odgovara sa traženim sadržajem. HTTP/1.1 koji je uveden 1997. godine služio je web-u gotovo dve desetljeća ali sa rastom kompleksnosti modernih sajtova njegova ograničenja su postala sve očiglednija. Današnji sajtovi učitavaju prosječno 70 do 100 resursa po stranici uključujući HTML, CSS, JavaScript, slike i fontove, a HTTP/1.1 nije dizajniran za tako intenzivnu komunikaciju.
HTTP/2 je objavljen 2015. godine kao odgovor na ova ograničenja, donoseći revolucionarne promjene u načinu na koji pregledač i server komuniciraju. HTTP/3 uveden 2022. godine ide korak dalje zamjenjujući TCP protokol sa QUIC-om za još brže i pouzdanije veze. Razumijevanje ovih protokola je važno za svakog ko se bavi web razvojem ili hostingom jer direktno utiču na brzinu i performanse sajta.
HTTP/1.1 i njegova ograničenja
Kako funkcionira HTTP/1.1
HTTP/1.1 koristi tekstualni format za zaglavlja zahtijeva i odgovora i funkcionira na principu zahtjev-odgovor. Pregledač šalje zahtjev za jedan resurs, čeka odgovor, pa tek onda šalje sljedeći zahtjev. Ovo je poznato kao head-of-line blocking problem gdje jedan spor zahtjev blokira sve ostale zahtjeve iza njega. Da bi zaobišli ovo ograničenje, pregledači otvaraju više paralelnih TCP konekcija ka istom serveru, tipično 6 do 8 konekcija, ali svaka konekcija zahtijeva poseban TCP handshake i TLS pregovaranje što troši vrijeme i resurse.
Workaround-i za HTTP/1.1
Web developeri su godinama koristili razne trikove da zaobiđu ograničenja HTTP/1.1. Domain sharding je tehnika gdje se resursi distribuiraju preko više poddomena da bi pregledač mogao da otvori više paralelnih konekcija. CSS sprite-ovi kombiniraju mnogo malih ikonica u jednu veliku sliku da smanje broj zahtijeva. Concatenation spaja više JavaScript ili CSS fajlova u jedan veliki fajl. Inlining ugrađuje male CSS ili JavaScript blokove direktno u HTML. Sve ove tehnike komplikuju razvoj i održavanje sajta i postaju nepotrebne sa HTTP/2.
HTTP/2 revolucija
Multiplexing
Najvažnija inovacija HTTP/2 protokola je multiplexing koji omogućava slanje više zahtijeva i odgovora istovremeno preko jedne TCP konekcije. Umjesto da čeka odgovor pre slanja sljedećeg zahtijeva, pregledač može poslati sve zahtjeve odjednom a server odgovara čim ima podatke spremne. Ovo eliminira head-of-line blocking na aplikativnom nivou i dramatično ubrzava učitavanje stranica sa mnogo resursa. Jedna konekcija zamjenjuje potrebu za 6 do 8 paralelnih konekcija što štedi memoriju i procesorsko vrijeme na obe strane.
Kompresija zaglavlja sa HPACK
HTTP/1.1 šalje zaglavlja kao nekomprimirani tekst sa svakim zahtjevom. Cookie zaglavlja mogu biti velika nekoliko kilobajta i šalju se sa svakim zahtjevom ka istom serveru. HTTP/2 koristi HPACK algoritam za kompresiju zaglavlja koji održava tabelu prethodno poslatih zaglavlja i šalje samo razlike. Ovo smanjuje veličinu zaglavlja za 85 do 95 procenata što je posebno značajno za sajtove sa velikim cookie-jima ili mnogo prilagođenih zaglavlja.
Server Push
Server Push funkcionalnost omogućava serveru da proaktivno pošalje resurse pregledaču pre nego što ih pregledač eksplicitno zatraži. Na primjer kada pregledač zatraži HTML stranicu, server može odmah poslati i CSS i JavaScript fajlove za koje zna da će biti potrebni. Ovo eliminira kašnjenje između parsiranja HTML-a i slanja zahtijeva za povezane resurse. U praksi Server Push se mora pažljivo koristiti jer preagresivno guranje resursa može potrošiti propusni opseg za resurse koje pregledač već ima u kešu.
Binarni format
HTTP/2 koristi binarni format umjesto tekstualnog formata HTTP/1.1. Binarni format je efikasniji za parsiranje jer računara prirodno rade sa binarnim podacima, otporniji je na greške jer ima jasno definiranu strukturu okvira i kompaktniji je jer ne troši bajtove na tekstualne delimitere i whitespace. Svaka HTTP/2 poruka se deli na okvire koji pripadaju određenom streamu, a više streamova se multipleksira preko jedne konekcije.
Stream prioritizacija
HTTP/2 omogućava pregledaču da dodijeli prioritet svakom zahtjevu. CSS fajlovi koji blokiraju renderiranje stranice mogu dobiti viši prioritet od slika koje se učitavaju ispod fold-a. Server koristi ove prioritete da odluči kojim redosledom da šalje podatke kada propusni opseg ne može da zadovolji sve zahtjeve istovremeno. Ovo rezultira bržim prikazivanjem vidljivog sadržaja stranice čak i kada se svi resursi još učitavaju.
HTTP/3 i QUIC protokol
Problem sa TCP-om
Iako HTTP/2 rješava mnoge probleme na aplikativnom nivou, i dalje koristi TCP za transport. TCP ima vlastiti head-of-line blocking problem jer ako se jedan paket izgubi, svi paketi iza njega moraju čekati dok se izgubljeni paket ne ponovo pošalje i primi. U HTTP/2 gdje se svi streamovi dele jednu TCP konekciju, gubitak jednog paketa blokira sve streamove čak i one čiji paketi su uspješno stigli. Na nestabilnim mrežama poput mobilnih ili WiFi mreža ovo može biti značajan problem.
QUIC protokol
HTTP/3 zamjenjuje TCP sa QUIC protokolom koji je razvio Google i koji radi preko UDP-a. QUIC implementira pouzdanu isporuku podataka neovisno za svaki stream što znači da gubitak paketa u jednom streamu ne blokira druge streamove. QUIC također integrira TLS 1.3 enkripciju direktno u transport protokol eliminirajući potrebu za posebnim TLS handshake-om. Rezultat je brže uspostavljanje konekcije jer QUIC handshake kombinira transport i kriptografske parametre u jedan korak.
Zero Round Trip konekcija
QUIC podržava 0-RTT (Zero Round Trip Time) uspostavljanje konekcije za ponovljene posjete. Kada korisnik ponovo posjeti sajt koji je ranije posetio, QUIC može odmah početi da šalje podatke bez ikakvog handshake-a koristeći kriptografske parametre iz prethodne sesije. Ovo je posebno značajno za mobilne korisnike koji često prelaze između WiFi i mobilne mreže jer QUIC konekcija preživljava promjenu IP adrese zahvaljujući Connection ID-u umjesto identifikacije po IP adresi i portu.
Migracija konekcije
TCP konekcija je definirana parom IP adresa i portova što znači da se konekcija prekida kada se promjeni IP adresa. Kada mobilni korisnik pređe sa WiFi na mobilnu mrežu, sve TCP konekcije se prekidaju i moraju ponovo da se uspostave. QUIC koristi Connection ID za identifikaciju konekcije umjesto IP adrese što omogućava glatku migraciju između mreža bez prekida u prenosu podataka. Korisnik ne primećuje tranziciju i sajt nastavlja da se učitava bez prekida.
Performanse u praksi
Merenja brzine
U praksi HTTP/2 donosi poboljšanje brzine učitavanja od 15 do 50 procenata u usporedbi sa HTTP/1.1, ovisno od kompleksnosti sajta. Sajtovi sa mnogo malih resursa imaju najveću korist jer multiplexing eliminira overhead otvaranja višestrukih konekcija. HTTP/3 donosi dodatno poboljšanje od 5 do 15 procenata u idealnim uslovima, ali na nestabilnim mrežama sa čestim gubicima paketa poboljšanje može biti i 30 procenata ili više zahvaljujući eliminaciji head-of-line blocking-a na transportnom nivou.
Core Web Vitals uticaj
HTTP/2 i HTTP/3 direktno poboljšavaju Core Web Vitals metrike koje Google koristi za rangiranje. Provjerite performanse svog sajta. Largest Contentful Paint se poboljšava jer se resursi brže učitavaju paralelno. First Input Delay se smanjuje jer se JavaScript brže preuzima i izvršava. Cumulative Layout Shift se poboljšava jer se fontovi i slike brže učitavaju smanjujući pomake sadržaja. Time to First Byte se poboljšava sa HTTP/3 zahvaljujući bržem uspostavljanju konekcije.
Kako aktivirati HTTP/2 i HTTP/3
Serverska podrška
HTTP/2 zahtijeva HTTPS konekciju (validan certifikat za TLS) jer svi moderni pregledači podržavaju HTTP/2 samo preko TLS-a. Većina modernih web servera uključujući Nginx, Apache i LiteSpeed podržava HTTP/2 sa jednostavnom konfiguracijom. Za Nginx je dovoljno dodati http2 parametar u listen direktivu. Apache zahtijeva omogućavanje mod_http2 modula. HTTP/3 zahtijeva podršku za QUIC protokol što trenutno nude Nginx sa quic modulom, LiteSpeed, Cloudflare i drugi CDN pružatelji usluge.
Provjera protokola
Možete provjeriti koji HTTP protokol koristi vaš sajt pomoću Chrome DevTools-a. Otvorite Network tab, desnim klikom na zaglavlje kolona dodajte Protocol kolonu i osvežite stranicu. Videćete h2 za HTTP/2 ili h3 za HTTP/3 pored svakog zahtijeva. Online alati poput KeyCDN HTTP/2 Test i HTTP/3 Check omogućavaju brzu provjeru bez instaliranja alata.
Zaključak
HTTP/2 i HTTP/3 su značajna poboljšanja koja donose brže učitavanje sajtova, bolji korisnički doživljaj i bolje rangiranje na Google-u. HTTP/2 multiplexing, kompresija zaglavlja i server push eliminiraju mnoga ograničenja starog HTTP/1.1 protokola. HTTP/3 sa QUIC protokolom rješava probleme sa gubitkom paketa i migraciju konekcija posebno korisno za mobilne korisnike. Na BeoHosting-u svi hosting paketi podržavaju HTTP/2 a naši napredni paketi uključuju i HTTP/3 podršku za maksimalne performanse vašeg sajta.
BeoHosting Team
10+ godina iskustva — Stručnjaci za web hosting i infrastrukturu
- Web Hosting
- WordPress Hosting
- VPS
- Dedicated Serveri
- Domeni
- SSL
- cPanel
- LiteSpeed
- Linux administracija
- DNS
Posljednje ažuriranje: