Vad är HTTP/2?
HTTP/2 är en större vidareutveckling av HTTP-protokollet (standardiserad som RFC 7540) som introducerar binär inramning, multiplexning, headerkomprimering och server push för att avsevärt förbättra webbprestandan jämfört med HTTP/1.1.HTTP/2 jämfört med HTTP/1.1
| Funktion | HTTP/1.1 | HTTP/2 |
|---|---|---|
| Format | Textbaserat | Binärt |
| Anslutningar | Flera (6–8 per värd) | En enda med multiplexning |
| Hantering av förfrågningar | Sekventiell | Parallella strömmar |
| Headerkomprimering | Ingen | HPACK-komprimering |
| Server push | Inte tillgängligt | Stöds |
| Prioritering | Ingen | Strömprioriteringar |
Så fungerar HTTP/2
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
Viktiga funktioner
Lager för binär inramning
HTTP/2 Frame Structure:
┌─────────────────────────────────────┐
│ Length (24 bits) │
├─────────────────────────────────────┤
│ Type (8 bits) │ Flags (8 bits) │
├─────────────────────────────────────┤
│ Stream Identifier (32 bits) │
├─────────────────────────────────────┤
│ Frame Payload (variable) │
└─────────────────────────────────────┘
HPACK-headerkomprimering
| Scenario | HTTP/1.1 Headers | HTTP/2 Headers |
|---|---|---|
| First request | ~800 bytes | ~800 bytes |
| Subsequent requests | ~800 bytes each | ~20-50 bytes (indexed) |
Prioritering av strömmar
Priority Tree:
Root (connection)
├── CSS (weight: 256, high priority)
├── JavaScript (weight: 220)
└── Images (weight: 110, lower priority)
Serverkrav
| Server | HTTP/2-stöd |
|---|---|
| nginx | 1.9.5+ |
| Apache | 2.4.17+ (mod_http2) |
| Node.js | 8.4+ (native) |
| IIS | Windows 10/Server 2016+ |
Prestandafördelar
- Minskad latens: En enda anslutning eliminerar kostnaden för TCP-handslag
- Bättre komprimering: 85–90 % mindre headerstorlek vid upprepade förfrågningar
- Parallell laddning: Alla resurser laddas samtidigt
- Server push: Resurser kan skickas proaktivt innan webbläsaren efterfrågar dem
Bästa metoder
1. Aktivera TLS: HTTP/2 kräver i praktiken HTTPS (webbläsare tvingar fram det)
2. Minska domänuppdelningen: Flera domäner försämrar nu prestandan
3. Sluta slå ihop filer: Multiplexning gör paketering mindre nödvändig
4. Använd server push försiktigt: Skicka bara kritiska resurser
5. Övervaka prestandan: Kontrollera att HTTP/2 förbättrar just ditt användningsfall
HTTP/2 ger betydande prestandaförbättringar för de flesta webbplatser genom effektivare användning av nätverksanslutningar.