Preskoči na vsebino
BeoHosting
BeoHosting
Tehnično

Kaj sta HTTP/2 in HTTP/3 in zakaj sta pomembna

BeoHosting Ekipa··10 min branja branja
Kaj sta HTTP/2 in HTTP/3 in zakaj sta pomembna

Evolucija protokola HTTP

HTTP oziroma Hypertext Transfer Protocol je osnova komunikacije na spletu. Razumevanje protokola je pomembno za izbiro pravega gostovanja. Vsakič, ko odprete spletno stran, vaš brskalnik pošlje HTTP zahtevo strežniku, ki odgovori z zahtevano vsebino. HTTP/1.1, ki je bil uveden leta 1997, je spletu služil skoraj dve desetletji, vendar so z rastjo kompleksnosti sodobnih strani njegove omejitve postale vse očitnejše. Današnje strani naložijo povprečno 70 do 100 virov na stran, vključno s HTML, CSS, JavaScript, slikami in pisavami, HTTP/1.1 pa ni bil zasnovan za tako intenzivno komunikacijo.

HTTP/2 je bil objavljen leta 2015 kot odgovor na te omejitve in je prinesel revolucionarne spremembe v načinu, kako brskalnik in strežnik komunicirata. HTTP/3, uveden leta 2022, gre korak dlje in nadomešča protokol TCP s QUIC za še hitrejše in zanesljivejše povezave. Razumevanje teh protokolov je pomembno za vsakogar, ki se ukvarja s spletnim razvojem ali gostovanjem, saj neposredno vplivajo na hitrost in zmogljivost strani.

HTTP/1.1 in njegove omejitve

Kako deluje HTTP/1.1

HTTP/1.1 uporablja tekstovni format za glave zahtev in odgovorov ter deluje po načelu zahteva-odgovor. Brskalnik pošlje zahtevo za en vir, počaka na odgovor in šele nato pošlje naslednjo zahtevo. To je znano kot težava head-of-line blocking, kjer ena počasna zahteva blokira vse ostale zahteve za njo. Da bi zaobšli to omejitev, brskalniki odprejo več vzporednih TCP povezav do istega strežnika, običajno 6 do 8 povezav, vendar vsaka povezava zahteva poseben TCP handshake in TLS pogajanje, kar porablja čas in vire.

Obhodne rešitve za HTTP/1.1

Spletni razvijalci so leta uporabljali različne trike za zaobitje omejitev HTTP/1.1. Domain sharding je tehnika, kjer se viri porazdelijo po več poddomenah, da lahko brskalnik odpre več vzporednih povezav. CSS sprite kombinirajo veliko majhnih ikon v eno veliko sliko za zmanjšanje števila zahtev. Concatenation združuje več JavaScript ali CSS datotek v eno veliko datoteko. Inlining vgradi majhne CSS ali JavaScript bloke neposredno v HTML. Vse te tehnike zapletajo razvoj in vzdrževanje strani ter postanejo nepotrebne s HTTP/2.

Revolucija HTTP/2

Multipleksiranje

Najpomembnejša inovacija protokola HTTP/2 je multipleksiranje, ki omogoča pošiljanje več zahtev in odgovorov hkrati prek ene TCP povezave. Namesto da bi čakal na odgovor pred pošiljanjem naslednje zahteve, lahko brskalnik pošlje vse zahteve naenkrat, strežnik pa odgovori takoj, ko ima pripravljene podatke. To odpravi head-of-line blocking na aplikacijski ravni in dramatično pospeši nalaganje strani z veliko viri. Ena povezava nadomesti potrebo po 6 do 8 vzporednih povezavah, kar prihrani pomnilnik in procesorski čas na obeh straneh.

Stiskanje glav s HPACK

HTTP/1.1 pošilja glave kot nestisnjeno besedilo z vsako zahtevo. Glave Cookie so lahko velike več kilobajtov in se pošiljajo z vsako zahtevo na isti strežnik. HTTP/2 za stiskanje glav uporablja algoritem HPACK, ki vzdržuje tabelo prej poslanih glav in pošilja le razlike. To zmanjša velikost glav za 85 do 95 odstotkov, kar je še posebej pomembno za strani z velikimi piškotki ali veliko prilagojenimi glavami.

Server Push

Funkcionalnost Server Push omogoča strežniku, da brskalniku proaktivno pošlje vire, preden jih brskalnik izrecno zahteva. Na primer, ko brskalnik zahteva HTML stran, lahko strežnik takoj pošlje tudi CSS in JavaScript datoteke, za katere ve, da bodo potrebne. To odpravi zakasnitev med razčlenjevanjem HTML in pošiljanjem zahteve za povezane vire. V praksi je treba Server Push uporabljati previdno, saj lahko preveč agresivno pošiljanje virov porabi pasovno širino za vire, ki jih ima brskalnik že v predpomnilniku.

Binarni format

HTTP/2 uporablja binarni format namesto tekstovnega formata HTTP/1.1. Binarni format je učinkovitejši za razčlenjevanje, ker računalniki naravno delajo z binarnimi podatki, je odpornejši na napake, ker ima jasno definirano strukturo okvirjev, in je kompaktnejši, ker ne porablja bajtov za tekstovne ločila in presledke. Vsako HTTP/2 sporočilo se deli na okvirje, ki pripadajo določenemu streamu, več streamov pa se multipleksira prek ene povezave.

Prioritizacija streamov

HTTP/2 omogoča brskalniku, da vsaki zahtevi dodeli prioriteto. CSS datoteke, ki blokirajo izrisovanje strani, lahko dobijo višjo prioriteto kot slike, ki se nalagajo pod pregibom. Strežnik te prioritete uporabi, da odloči, v katerem vrstnem redu pošilja podatke, kadar pasovna širina ne more zadovoljiti vseh zahtev hkrati. To rezultira v hitrejšem prikazu vidne vsebine strani, tudi kadar se vsi viri še nalagajo.

HTTP/3 in protokol QUIC

Težava s TCP

Čeprav HTTP/2 rešuje številne težave na aplikacijski ravni, za transport še vedno uporablja TCP. TCP ima svojo težavo head-of-line blocking, saj če se en paket izgubi, morajo vsi paketi za njim čakati, dokler se izgubljeni paket ne pošlje in prejme ponovno. Pri HTTP/2, kjer si vsi streami delijo eno TCP povezavo, izguba enega paketa blokira vse streame, tudi tiste, katerih paketi so uspešno prispeli. Na nestabilnih omrežjih, kot so mobilna ali WiFi omrežja, je to lahko pomembna težava.

Protokol QUIC

HTTP/3 nadomesti TCP s protokolom QUIC, ki ga je razvil Google in deluje prek UDP. QUIC implementira zanesljivo dostavo podatkov neodvisno za vsak stream, kar pomeni, da izguba paketa v enem streamu ne blokira drugih streamov. QUIC tudi integrira šifriranje TLS 1.3 neposredno v transportni protokol in odpravi potrebo po ločenem TLS handshaku. Rezultat je hitrejša vzpostavitev povezave, saj QUIC handshake združi transportne in kriptografske parametre v en korak.

Povezava Zero Round Trip

QUIC podpira vzpostavitev povezave 0-RTT (Zero Round Trip Time) za ponovljene obiske. Ko uporabnik ponovno obišče stran, ki jo je prej obiskal, lahko QUIC takoj začne pošiljati podatke brez kakršnega koli handshaka z uporabo kriptografskih parametrov iz prejšnje seje. To je še posebej pomembno za mobilne uporabnike, ki pogosto prehajajo med WiFi in mobilnim omrežjem, saj QUIC povezava preživi spremembo IP naslova zahvaljujoč Connection ID namesto identifikacije po IP naslovu in vratih.

Migracija povezave

TCP povezava je definirana s parom IP naslovov in vrat, kar pomeni, da se povezava prekine, ko se spremeni IP naslov. Ko mobilni uporabnik preide z WiFi na mobilno omrežje, se vse TCP povezave prekinejo in jih je treba ponovno vzpostaviti. QUIC za identifikacijo povezave uporablja Connection ID namesto IP naslova, kar omogoča gladko migracijo med omrežji brez prekinitve v prenosu podatkov. Uporabnik prehoda ne opazi in stran se nadaljuje z nalaganjem brez prekinitve.

Zmogljivost v praksi

Meritve hitrosti

V praksi HTTP/2 prinaša izboljšanje hitrosti nalaganja od 15 do 50 odstotkov v primerjavi s HTTP/1.1, odvisno od kompleksnosti strani. Strani z veliko majhnimi viri imajo največjo korist, ker multipleksiranje odpravi režijske stroške odpiranja več povezav. HTTP/3 prinaša dodatno izboljšanje od 5 do 15 odstotkov v idealnih razmerah, na nestabilnih omrežjih s pogostimi izgubami paketov pa je lahko izboljšanje tudi 30 odstotkov ali več zahvaljujoč odpravi head-of-line blocking na transportni ravni.

Vpliv na Core Web Vitals

HTTP/2 in HTTP/3 neposredno izboljšujeta metrike Core Web Vitals, ki jih Google uporablja za uvrščanje. Preverite zmogljivost svoje strani. Largest Contentful Paint se izboljša, ker se viri hitreje nalagajo vzporedno. First Input Delay se zmanjša, ker se JavaScript hitreje prenese in izvede. Cumulative Layout Shift se izboljša, ker se pisave in slike hitreje naložijo, kar zmanjša premike vsebine. Time to First Byte se s HTTP/3 izboljša zahvaljujoč hitrejši vzpostavitvi povezave.

Kako aktivirati HTTP/2 in HTTP/3

Strežniška podpora

HTTP/2 zahteva HTTPS povezavo (veljaven certifikat za TLS), saj vsi sodobni brskalniki podpirajo HTTP/2 le prek TLS. Večina sodobnih spletnih strežnikov, vključno z Nginx, Apache in LiteSpeed, podpira HTTP/2 s preprosto konfiguracijo. Pri Nginx je dovolj dodati parameter http2 v direktivo listen. Apache zahteva omogočanje modula mod_http2. HTTP/3 zahteva podporo za protokol QUIC, kar trenutno ponujajo Nginx z modulom quic, LiteSpeed, Cloudflare in drugi ponudniki CDN.

Preverjanje protokola

Kateri HTTP protokol uporablja vaša stran, lahko preverite s pomočjo Chrome DevTools. Odprite zavihek Network, z desnim klikom na glavo stolpcev dodajte stolpec Protocol in osvežite stran. Poleg vsake zahteve boste videli h2 za HTTP/2 ali h3 za HTTP/3. Spletna orodja, kot sta KeyCDN HTTP/2 Test in HTTP/3 Check, omogočajo hitro preverjanje brez nameščanja orodij.

Zaključek

HTTP/2 in HTTP/3 sta pomembni izboljšavi, ki prinašata hitrejše nalaganje strani, boljšo uporabniško izkušnjo in boljše uvrščanje na Googlu. HTTP/2 multipleksiranje, stiskanje glav in server push odpravijo številne omejitve starega protokola HTTP/1.1. HTTP/3 s protokolom QUIC rešuje težave z izgubo paketov in migracijo povezav, kar je še posebej koristno za mobilne uporabnike. Pri BeoHosting vsi paketi gostovanja podpirajo HTTP/2, naši napredni paketi pa vključujejo tudi podporo za HTTP/3 za maksimalno zmogljivost vaše strani.

BeoHosting Ekipa

10+ let izkušenj — Strokovnjaki za spletno gostovanje in infrastrukturo

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

Zadnja posodobitev: