HTTP/2 ir HTTP/3 (QUIC) paaiškinimas

HTTP yra protokolas, kuriuo naršyklės atsisiunčia jūsų puslapius. Naujesnės jo versijos — HTTP/2 ir HTTP/3 — tą patį turinį per tą patį tinklą perkelia gerokai efektyviau. Supratimas, kas pasikeitė, padeda išgauti realų greitį iš ryšio, už kurį jau mokate.

Trumpai

HTTP/1.1 vienu metu apdoroja po vieną užklausą per ryšį, todėl atsiranda eilės vėlavimai. HTTP/2 daugelį užklausų multipleksuoja per vieną ryšį. HTTP/3 žengia dar toliau ir veikia per QUIC virš UDP, panaikindamas visą klasę užstrigimų, kai prarandami paketai. Abu plačiai palaikomi, o jų įjungimas paprastai tėra vienas serverio arba CDN nustatymas.

Problema: eilės pradžios blokavimas

Naudojant HTTP/1.1, vienas ryšys vienu metu perneša vieną užklausą ir atsakymą. Naršyklės tai apeina atverdamos kelis lygiagrečius ryšius, tačiau kiekvienas jų vis tiek apdoroja užklausas iš eilės — jei vienas atsakymas lėtas, viskas, kas laukia eilėje už jo, delsia. Tai eilės pradžios blokavimas (head-of-line blocking), o šiuolaikiniame puslapyje su dešimtimis išteklių jis susisumuoja į realų vėlavimą.

HTTP/2: multipleksavimas per vieną ryšį

HTTP/2 tekstinius pranešimus pakeitė kompaktišku dvejetainiu kadravimo sluoksniu. Pagrindinė jo savybė yra multipleksavimas: daug užklausų ir atsakymų vienu metu dalijasi vienu ryšiu, persipindami kaip nepriklausomi srautai. Jis taip pat glaudina antraštes ir leidžia serveriui teikti srautams prioritetus. Praktiškai tai reiškia, kad visi tie paveikslėliai, scenarijai ir stilių lentelės kraunasi kartu, o ne eilėje.

Yra viena kliūtis. HTTP/2 vis tiek veikia per TCP, o TCP baitus pristato griežtai iš eilės. Praradus vieną paketą, TCP sulaiko visus srautus, kol tas paketas persiunčiamas iš naujo — taigi nuostolingame tinkle eilės pradžios blokavimas persikelia žemyn į transporto sluoksnį.

HTTP/3: QUIC per UDP

HTTP/3 tai išsprendžia atsisakydamas TCP ir pereidamas prie QUIC — transporto, sukurto virš UDP. QUIC išlaiko srautus tikrai nepriklausomus, todėl prarastas paketas užstabdo tik savo srautą, o ne visus. Jis taip pat sujungia TLS rankos paspaudimą su ryšio užmezgimu, sutrumpindamas apsikeitimų skaičių prieš pradedant tekėti duomenims, ir palaiko ryšio migraciją — telefonas, persijungiantis nuo Wi-Fi prie mobiliojo ryšio, gali išlaikyti sesiją gyvą. Šifravimas privalomas, todėl HTTP/3 visada veikia per TLS.

VersijaTransportasVienalaikiškumasPagrindinis privalumas
HTTP/1.1TCPViena užklausa per ryšįVisuotinis palaikymas
HTTP/2TCPMultipleksuoti srautaiLygiagretus krovimas, antraščių glaudinimas
HTTP/3QUIC / UDPNepriklausomi srautaiNėra transporto lygio blokavimo, greitesnis užmezgimas

Kaip patikrinti, ką palaikote

Jūsų naršyklės kūrėjo įrankiai rodo protokolą kiekvienai užklausai — skirtuke „Network“ pridėkite stulpelį „Protocol“, kur matysite h2 arba h3. Iš komandinės eilutės tai gali pranešti ir curl:

curl -sI --http2 https://example.com | head -n 1
curl -sI --http3 https://example.com | head -n 1

Galite tiesiog atlikti patikrą arba peržiūrėti atsako antraštes mūsų greičio testu, kad pamatytumėte, kaip atsako jūsų serveris.

Kaip juos įjungti

Reikalavimai kuklūs. Ir HTTP/2, ir HTTP/3 praktiškai reikalauja HTTPS, todėl pirmiausia įsitikinkite, kad jūsų HTTP-į-HTTPS nukreipimai teisingi. Tada:

  • Nginx HTTP/2 įjungia su http2 on;, o HTTP/3 — per QUIC klausytoją naujesnėse laidose.
  • Apache naudoja mod_http2 su direktyva Protocols h2 http/1.1.
  • LiteSpeed palaiko HTTP/2 ir HTTP/3 iškart, be jokio papildomo modulio.
  • CDN HTTP/3 dažnai tėra vienas jungiklis, net jei jūsų kilmės serveris kalba tik HTTP/1.1.
HTTP/3 reikia atviro UDP. Naršyklės aptinka HTTP/3 per Alt-Svc antraštę, skelbiamą per HTTP/2, ir tada atsinaujina. Jei ugniasienė blokuoja UDP prievadą 443, klientai tyliai lieka ties HTTP/2 — tai teisingas elgesys, bet verta žinoti, kai atrodo, kad „neveikia“.

Dažniausiai užduodami klausimai

Ar reikia keisti svetainės kodą, kad naudočiau HTTP/2 ar HTTP/3?

Ne. Tai transporto atnaujinimai, kuriuos tvarko jūsų serveris arba CDN. Jūsų HTML, CSS ir JavaScript lieka tie patys; lankytojai juos tiesiog gauna greičiau.

Ar HTTP/3 visada greitesnis už HTTP/2?

Realiuose tinkluose su tam tikru paketų praradimu ar mobiliajame ryšyje — paprastai taip. Tobulame, mažų nuostolių ryšyje skirtumas gali būti nedidelis, bet HTTP/3 retai veikia prasčiau.

Ar senos naršyklės vis dar pasieks mano svetainę?

Taip. Serveriai suderina geriausią bendrą versiją ir grįžta prie HTTP/1.1 klientams, kuriems to reikia, todėl niekas nelieka užblokuotas.

Susiję vadovai

Patikrinkite savo svetainę pagal šį vadovą

Atlikite nemokamą ScanOpsPro patikrą ir pažiūrėkite, kaip jūsų svetainė tvarkosi su pagrindais.

Atlikti nemokamą patikrą