Preskoči na sadržaj
Pustili smo novi sajt sa mnogo novih opcija — AI Builder uskoro
BeoHosting
BeoHosting
Tehničko

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

BeoHosting Tim··10 min čitanja
Š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. Razumevanje protokola je važno za izbor pravog hostinga. Svaki put kada otvorite web stranicu, vaš pregledač šalje HTTP zahtev serveru koji odgovara sa traženim sadržajem. HTTP/1.1 koji je uveden 1997. godine služio je web-u gotovo dve decenije ali sa rastom kompleksnosti modernih sajtova njegova ograničenja su postala sve očiglednija. Današnji sajtovi učitavaju proseč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 promene u načinu na koji pregledač i server komuniciraju. HTTP/3 uveden 2022. godine ide korak dalje zamenjujući TCP protokol sa QUIC-om za još brže i pouzdanije veze. Razumevanje 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 funkcioniše HTTP/1.1

HTTP/1.1 koristi tekstualni format za zaglavlja zahteva i odgovora i funkcioniše na principu zahtev-odgovor. Pregledač šalje zahtev za jedan resurs, čeka odgovor, pa tek onda šalje sledeći zahtev. Ovo je poznato kao head-of-line blocking problem gde jedan spor zahtev blokira sve ostale zahteve 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 zahteva poseban TCP handshake i TLS pregovaranje što troši vreme 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 gde se resursi distribuiraju preko više poddomena da bi pregledač mogao da otvori više paralelnih konekcija. CSS sprite-ovi kombinuju mnogo malih ikonica u jednu veliku sliku da smanje broj zahteva. 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 zahteva i odgovora istovremeno preko jedne TCP konekcije. Umesto da čeka odgovor pre slanja sledećeg zahteva, pregledač može poslati sve zahteve odjednom a server odgovara čim ima podatke spremne. Ovo eliminiše head-of-line blocking na aplikativnom nivou i dramatično ubrzava učitavanje stranica sa mnogo resursa. Jedna konekcija zamenjuje potrebu za 6 do 8 paralelnih konekcija što štedi memoriju i procesorsko vreme na obe strane.

Kompresija zaglavlja sa HPACK

HTTP/1.1 šalje zaglavlja kao nekomprimirani tekst sa svakim zahtevom. Cookie zaglavlja mogu biti velika nekoliko kilobajta i šalju se sa svakim zahtevom 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 primer kada pregledač zatraži HTML stranicu, server može odmah poslati i CSS i JavaScript fajlove za koje zna da će biti potrebni. Ovo eliminiše kašnjenje između parsiranja HTML-a i slanja zahteva 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 umesto tekstualnog formata HTTP/1.1. Binarni format je efikasniji za parsiranje jer kompjuteri prirodno rade sa binarnim podacima, otporniji je na greške jer ima jasno definisanu 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 dodeli prioritet svakom zahtevu. CSS fajlovi koji blokiraju renderovanje 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 zahteve 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 rešava mnoge probleme na aplikativnom nivou, i dalje koristi TCP za transport. TCP ima sopstveni 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 gde se svi streamovi dele jednu TCP konekciju, gubitak jednog paketa blokira sve streamove čak i one čiji paketi su uspešno stigli. Na nestabilnim mrežama poput mobilnih ili WiFi mreža ovo može biti značajan problem.

QUIC protokol

HTTP/3 zamenjuje TCP sa QUIC protokolom koji je razvio Google i koji radi preko UDP-a. QUIC implementira pouzdanu isporuku podataka nezavisno za svaki stream što znači da gubitak paketa u jednom streamu ne blokira druge streamove. QUIC takođe integriše 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 kombinuje transport i kriptografske parametre u jedan korak.

Zero Round Trip konekcija

QUIC podržava 0-RTT (Zero Round Trip Time) uspostavljanje konekcije za ponovljene posete. Kada korisnik ponovo poseti 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 promenu IP adrese zahvaljujući Connection ID-u umesto identifikacije po IP adresi i portu.

Migracija konekcije

TCP konekcija je definisana parom IP adresa i portova što znači da se konekcija prekida kada se promeni 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 umesto 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 poređenju sa HTTP/1.1, zavisno od kompleksnosti sajta. Sajtovi sa mnogo malih resursa imaju najveću korist jer multiplexing eliminiše 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. Proverite 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 zahteva HTTPS konekciju (validan sertifikat 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 zahteva omogućavanje mod_http2 modula. HTTP/3 zahteva podršku za QUIC protokol što trenutno nude Nginx sa quic modulom, LiteSpeed, Cloudflare i drugi CDN provajderi.

Provera protokola

Možete proveriti 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 zahteva. Online alati poput KeyCDN HTTP/2 Test i HTTP/3 Check omogućavaju brzu proveru 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 eliminišu mnoga ograničenja starog HTTP/1.1 protokola. HTTP/3 sa QUIC protokolom reš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 Tim

10+ godina iskustva — Stručnjaci za web hosting i infrastrukturu

  • Web Hosting
  • WordPress Hosting
  • VPS
  • Dedicated Serveri
  • Domeni
  • SSL
  • cPanel
  • LiteSpeed
  • Linux administracija
  • DNS

Poslednje ažurirano: