Middle
Wat zijn de verschillen tussen de protocollen HTTP/1 en HTTP/2?
sobes.tech AI
Antwoord van AI
De belangrijkste verschillen tussen HTTP/1.1 en HTTP/2:
-
Multiplexing:
- HTTP/1.1: Sequentiële verwerking van verzoeken op één verbinding. Voor parallelle downloads waren meerdere TCP-verbindingen nodig.
- HTTP/2: Multiplexing op één TCP-verbinding. Stelt gelijktijdig verzenden van meerdere verzoeken en ontvangen van antwoorden mogelijk, zonder elkaar te blokkeren.
-
Headercompressie (HPACK):
- HTTP/1.1: Headers worden zonder compressie verzonden, wat overbodig kan zijn bij veel verzoeken.
- HTTP/2: Headercompressie met behulp van het HPACK-algoritme. Vermindert de grootte van de verzonden gegevens.
-
Prioritering van stromen:
- HTTP/1.1: Geen prioriteit.
- HTTP/2: De client kan prioriteiten toewijzen aan verschillende datastromen, wat de verwerkingsvolgorde door de server beïnvloedt.
-
Server Push:
- HTTP/1.1: De client moet elk resource (CSS, JS, afbeeldingen) expliciet aanvragen.
- HTTP/2: De server kan resources vooraf sturen die nodig worden geacht voor het weergeven van de pagina, voordat de client ze aanvraagt.
-
Binaire protocol:
- HTTP/1.1: Tekstgebaseerd protocol, relatief gemakkelijk te lezen.
- HTTP/2: Binair protocol, efficiënter voor parsing en overdracht.
Vergelijkingstabel:
| Kenmerk | HTTP/1.1 | HTTP/2 |
|---|---|---|
| Multiplexing | Nee (meerdere TCP) | Ja (één TCP) |
| Headercompressie | Nee | Ja (HPACK) |
| Prioritering van stromen | Nee | Ja |
| Server Push | Nee | Ja |
| Protocolformaat | Tekstueel | Binair |
| Head-of-Line-blokkering probleem | Aanwezig (voor één TCP) | Verminderd dankzij multiplexing |
Voorbeeld van multiplexing (conceptueel):
// HTTP/1.1: Sequentiële verzoeken
fetch('/resource1')
.then(() => fetch('/resource2'))
.then(() => fetch('/resource3'));
// HTTP/2: Parallelle verzoeken op één verbinding
// In de browser gebeurt dit automatisch voor HTTP/2
// Conceptueel kunnen verzoeken bijna gelijktijdig worden verzonden