Middle
Mi különbözteti meg az HTTP/1 és HTTP/2 protokollokat?
sobes.tech MI
Válasz az MI-től
A HTTP/1.1 és a HTTP/2 közötti fő különbségek:
-
Multiplexálás:
- HTTP/1.1: Szekvenciális kérésfeldolgozás egy kapcsolatban. Párhuzamos letöltésekhez több TCP kapcsolat szükséges volt.
- HTTP/2: Multiplexálás egy TCP kapcsolaton belül. Lehetővé teszi több kérés egyidejű küldését és válaszok fogadását, anélkül, hogy blokkolná egymást.
-
Fejléc tömörítés (HPACK):
- HTTP/1.1: A fejlécet tömörítetlenül továbbítják, ami sok kérés esetén redundáns lehet.
- HTTP/2: Fejléc tömörítése az HPACK algoritmus segítségével. Csökkenti az átvitt adatok méretét.
-
Áramlatok priorizálása:
- HTTP/1.1: Nem volt priorizálás.
- HTTP/2: A kliens különböző adatfolyamoknak prioritásokat rendelhet, befolyásolva azok feldolgozási sorrendjét a szerver által.
-
Szerver által küldött push (Server Push):
- HTTP/1.1: A kliensnek explicit módon kérnie kell minden erőforrást (CSS, JS, képek).
- HTTP/2: A szerver előre küldheti azokat az erőforrásokat, amelyek szükségesek lehetnek az oldal megjelenítéséhez, még mielőtt a kliens kérné őket.
-
Bináris protokoll:
- HTTP/1.1: Szöveges protokoll, viszonylag könnyen olvasható.
- HTTP/2: Bináris protokoll, hatékonyabb a parsing és az átvitel szempontjából.
Összehasonlító táblázat:
| Jellemző | HTTP/1.1 | HTTP/2 |
|---|---|---|
| Multiplexálás | Nem (több TCP) | Igen (egy TCP) |
| Fejléc tömörítés | Nem | Igen (HPACK) |
| Áramlatok priorizálása | Nem | Igen |
| Szerver push | Nem | Igen |
| Protokoll formátuma | Szöveges | Bináris |
| Head-of-Line blokkolási probléma | Jelen van (egy TCP esetén) | Csökkent a multiplexálás révén |
Példa multiplexálásra (koncepcionális):
// HTTP/1.1: Szekvenciális kérések
fetch('/resource1')
.then(() => fetch('/resource2'))
.then(() => fetch('/resource3'));
// HTTP/2: Párhuzamos kérések egy kapcsolaton
// A böngészőben ez automatikusan megtörténik
// Koncepcionálisan, a kérések szinte egyidejűleg küldhetők