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.
| Versija | Transportas | Vienalaikiškumas | Pagrindinis privalumas |
|---|---|---|---|
| HTTP/1.1 | TCP | Viena užklausa per ryšį | Visuotinis palaikymas |
| HTTP/2 | TCP | Multipleksuoti srautai | Lygiagretus krovimas, antraščių glaudinimas |
| HTTP/3 | QUIC / UDP | Nepriklausomi srautai | Nė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_http2su direktyvaProtocols h2 http/1.1. - LiteSpeed palaiko HTTP/2 ir HTTP/3 iškart, be jokio papildomo modulio.
- Už CDN HTTP/3 dažnai tėra vienas jungiklis, net jei jūsų kilmės serveris kalba tik HTTP/1.1.
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
Kaip veikia DNS: vadovas svetainės savininkui
Nuo domeno įvedimo iki puslapio įkėlimo — kaip vyksta DNS ir kokius įrašus turėtų žinoti kiekvienas savininkas.
Skaityti →DNS, talpinimas ir infrastruktūraKas yra CDN ir ar jo reikia?
Kaip turinio pristatymo tinklai (CDN) pagreitina svetaines bei padaro jas atsparesnes ir kada verta juos naudoti.
Skaityti →DNS, talpinimas ir infrastruktūraBendras, VPS ar dedikuotas serveris?
Tikrieji talpinimo lygių skirtumai ir kaip pasirinkti pagal srautą bei saugumo poreikius.
Skaityti →Patikrinkite savo svetainę pagal šį vadovą
Atlikite nemokamą ScanOpsPro patikrą ir pažiūrėkite, kaip jūsų svetainė tvarkosi su pagrindais.
Atlikti nemokamą patikrą