Wat is HTTP/2?
HTTP/2 is een belangrijke herziening van het HTTP-protocol (gestandaardiseerd als RFC 7540) met binaire framing, multiplexing, headercompressie en server push, voor aanzienlijk betere webprestaties dan HTTP/1.1.HTTP/2 versus HTTP/1.1
| Functie | HTTP/1.1 | HTTP/2 |
|---|---|---|
| Formaat | Op tekst gebaseerd | Binair |
| Verbindingen | Meerdere (6-8 per host) | Eén gemultiplexte verbinding |
| Verwerking van verzoeken | Sequentieel | Parallelle streams |
| Headercompressie | Geen | HPACK-compressie |
| Server push | Niet beschikbaar | Ondersteund |
| Prioritering | Geen | Streamprioriteiten |
Hoe HTTP/2 werkt
HTTP/1.1 (Head-of-Line Blocking):
Connection 1: Request A ──────────► Response A
Connection 2: Request B ──────────► Response B
Connection 3: Request C ──────────► Response C
(Multiple connections, sequential per connection)
HTTP/2 (Multiplexing):
Single Connection:
├── Stream 1: Request A ──► Response A
├── Stream 2: Request B ──► Response B
├── Stream 3: Request C ──► Response C
└── All interleaved on same connection
Belangrijkste functies
Binaire framinglaag
HTTP/2 Frame Structure:
┌─────────────────────────────────────┐
│ Length (24 bits) │
├─────────────────────────────────────┤
│ Type (8 bits) │ Flags (8 bits) │
├─────────────────────────────────────┤
│ Stream Identifier (32 bits) │
├─────────────────────────────────────┤
│ Frame Payload (variable) │
└─────────────────────────────────────┘
HPACK-headercompressie
| Scenario | HTTP/1.1-headers | HTTP/2-headers |
|---|---|---|
| Eerste verzoek | ~800 bytes | ~800 bytes |
| Volgende verzoeken | ~800 bytes elk | ~20-50 bytes (geïndexeerd) |
Streamprioritering
Priority Tree:
Root (connection)
├── CSS (weight: 256, high priority)
├── JavaScript (weight: 220)
└── Images (weight: 110, lower priority)
Serververeisten
| Server | HTTP/2-ondersteuning |
|---|---|
| nginx | 1.9.5+ |
| Apache | 2.4.17+ (mod_http2) |
| Node.js | 8.4+ (native) |
| IIS | Windows 10/Server 2016+ |
Prestatievoordelen
- Lagere latentie: één verbinding elimineert de overhead van TCP-handshakes
- Betere compressie: 85-90% minder headeromvang bij herhaalde verzoeken
- Parallel laden: alle resources worden gelijktijdig geladen
- Server push: stuurt resources proactief voordat de browser erom vraagt
Beste praktijken
1. Schakel TLS in: HTTP/2 vereist in de praktijk HTTPS (browsers dwingen dit af)
2. Beperk domain sharding: meerdere domeinen schaden de prestaties nu
3. Stop met bestanden samenvoegen: door multiplexing is bundelen minder nodig
4. Gebruik server push zorgvuldig: push alleen kritieke resources
5. Monitor prestaties: controleer of HTTP/2 uw specifieke gebruiksscenario verbetert
HTTP/2 levert voor de meeste websites aanzienlijke prestatieverbeteringen door netwerkverbindingen efficiënter te benutten.