HTTP/2 og HTTP/3 — Protokoller der eliminerer latency-overhead
HTTP/2 multiplekser requests over én forbindelse. HTTP/3 eliminerer TCP head-of-line blocking via QUIC over UDP. Begge er direkte performance-forbedringer — men kræver serverside support.
HTTP-protokollen er fundamentet for al kommunikation mellem browser og server. HTTP/1.1 fra 1997 har begrænsninger der direkte forringer web performance for moderne sites med mange ressourcer. HTTP/2 og HTTP/3 løser disse begrænsninger på protokolniveau og forbedrer TTFB og LCP markant på sites der udnytter dem korrekt.
HTTP/1.1 og dens begrænsninger
HTTP/1.1 er request-respons-baseret og synkron: én request ad gangen per forbindelse. Browseren må vente på svar inden næste request kan sendes (head-of-line blocking).
Workarounds i HTTP/1.1-æraen:
- 6 parallelle forbindelser per origin — browseren åbner 6 TCP-forbindelser simultant
- Domain sharding — assets serveres fra flere subdomæner (
static1.example.com,static2.example.com) for at omgå 6-forbindelses-grænsen - Resource bundling — alt JavaScript samles i ét bundle, alt CSS i ét stylesheet
Disse workarounds er ikke nødvendige med HTTP/2 og kontraproduktive.
HTTP/2 — multiplexing og streams
HTTP/2 introducerer binær framing og multiplexing: requests og responses opdeles i frames der sendes interleaved over én enkelt TCP-forbindelse.
Nøgle-features:
Multiplexing — et ubegrænset antal streams per forbindelse. Alle assets fra example.com hentes parallelt over én forbindelse. Ingen 6-forbindelses-grænse.
Header compression (HPACK) — HTTP-headers komprimeres. Gentagne headers (f.eks. Cookie) sendes kun én gang og refereres derefter. Reducerer overhead markant for sites med mange requests.
Stream prioritering — klienten kan angive hvilke streams der er vigtigst. Kritisk CSS og JavaScript kan prioriteres over billeder.
Server push — serveren kan proaktivt sende ressourcer klienten endnu ikke har bedt om. I praksis er dette sjældent nyttigt og oft kontraproduktivt — det er deprecated i mange implementeringer.
# Aktiver HTTP/2 i Nginx
server {
listen 443 ssl http2;
# ...
}
TCP head-of-line blocking er dog stadig et problem i HTTP/2: pakketab på TCP-forbindelsen blokerer alle streams — ikke kun den påvirkede.
HTTP/3 — QUIC erstatter TCP
HTTP/3 erstatter TCP med QUIC (Quick UDP Internet Connections), en transportprotokol bygget på UDP med integreret TLS 1.3.
Fordele over HTTP/2:
Elimineret head-of-line blocking — QUIC håndterer tabte pakker per stream. Pakketab påvirker kun den ene stream, ikke alle andre streams på forbindelsen.
0-RTT connection resumption — returnerende brugere kan genoptage en QUIC-session uden handshake. Første request sendes øjeblikkeligt. Med TLS 1.3 over TCP kræver det minimum 1 RTT.
Bedre mobilperformance — QUIC håndterer netværksskift (Wi-Fi til 4G) bedre end TCP via connection migration: forbindelsen overlever IP-adresseændringer.
Connection ID i stedet for IP+port — QUIC identificerer forbindelser via et unikt ID, ikke IP-adresse og port. Mobilbrugere der skifter netværk mister ikke forbindelsen.
Browser- og serverside support
HTTP/2 understøttes af alle moderne browsere og de fleste webservere (Nginx, Apache, Caddy, Cloudflare). Det kræver HTTPS.
HTTP/3 understøttes af Chrome, Firefox og Edge. Cloudflare, Fastly og de store CDN-udbydere understøtter HTTP/3. Origin-servere er langsommere til at implementere det.
Tjek med: curl -I --http3 https://example.com
SEO-implikationer
HTTP/2 og HTTP/3 reducerer TTFB og LCP direkte — særligt for sider med mange ressourcer. Skiftet fra HTTP/1.1 til HTTP/2 kan reducere indlæsningstid med 20-50% for asset-tunge sider.
Google Googlebots støtter HTTP/2. HTTP/3-support for Googlebot er ikke bekræftet (2026). → Denne artikel er en del af Web Performance — Core Web Vitals og teknisk hastighed.
Andre artikler i samme emne
- Animation performance — Frame rate og jank-fri bevægelse
- Billedoptimering — Formater, størrelser og SEO
- Browser rendering pipeline — Fra HTML til pixels
- CLS-problemer — Årsager til Cumulative Layout Shift og løsninger
- Core Web Vitals — LCP, INP og CLS forklaret
- CSS — Cascading Style Sheets og SEO
- CSS containment — Isolér rendering og accelerér layout
- Font-optimering — Webfonts, FOUT og SEO
- INP-optimering — Interaction to Next Paint og Core Web Vitals
- JavaScript bundle-optimering — Code splitting, tree shaking og analyse
- Kritisk renderingsti — Hvad browseren gør før du ser noget
- Latency — Forsinkelse i netværket og hvad du kan gøre ved det
- Lazy loading — Udskyd indlæsning af billeder og ressourcer
- LCP-optimering — Sådan forbedrer du Largest Contentful Paint
- Long Tasks og LoAF — Hvad blokerer main thread
- Navigation og resource timings — Browserens performance-API
- PageSpeed og SEO — Hastighed som rankingfaktor
- Performance budgets — Grænser der forhindrer regressioner
- Performance timings — Hvornår er det for langsomt?
- Resource hints — Preload, prefetch og preconnect til SEO
- Responsive images — srcset, sizes og art direction
- Responsivt design — Mobile-first og SEO
- RUM vs. syntetisk monitoring — To syn på web performance
- Service Workers — Offline caching og PWA performance
- Speculative loading — Prefetch og prerender af næste side
- Startup performance — Hurtig app-start og time to interactive
- Tredjeparts-scripts og performance — Impact og strategier
- Tredjepartsscripts — Analytics, ads og performance-konsekvenser
- TTFB og hosting — Server response time og SEO
- Video performance — Lazy loading, formater og indlæsningsstrategi
- Viewport tag — Meta viewport og mobil-rendering
- Web Workers — Parallel JavaScript uden main thread-blokning
Ofte stillede spørgsmål
- Hvad er den praktiske forskel på HTTP/1.1 og HTTP/2?
- HTTP/1.1 håndterer én request per forbindelse ad gangen — browseren åbner op til 6 parallelle TCP-forbindelser per origin som workaround. HTTP/2 multiplekser et ubegrænset antal requests over én forbindelse via streams. Det eliminerer behovet for domain sharding og reducerer TCP-handshake-overhead markant.
- Hvad er QUIC og hvorfor er det bedre end TCP?
- QUIC er en transportprotokol bygget på UDP der integrerer TLS 1.3. Fordele over TCP: 0-RTT forbindelsesgenoptagelse (ingen handshake ved returnerende forbindelser), elimineret head-of-line blocking (pakketab påvirker kun den ene stream, ikke alle), og bedre ydeevne på ustabile mobilforbindelser. HTTP/3 bruger QUIC i stedet for TCP.
- Kræver HTTP/2 HTTPS?
- I praksis kræver alle moderne browsere HTTPS for at understøtte HTTP/2 — selvom protokolspecifikationen teknisk tillader ukrypteret HTTP/2. HTTP/3 (QUIC) kræver obligatorisk TLS. Det betyder at migration til HTTPS ikke blot er en SEO-ranking-faktor, men også en forudsætning for at få de performance-fordele HTTP/2 og HTTP/3 giver via multiplexing og reduceret latency.
- Hvad er HTTP/2 server push og er det stadig relevant?
- HTTP/2 server push tillader serveren at sende ressourcer til browseren proaktivt — inden browseren beder om dem. I teorien en latency-reduktion. I praksis er det problematisk: serveren ved ikke om ressourcen allerede er cachet hos browseren, og unødvendigt push spilder båndbredde. Mange CDN-udbydere og Chrome har reduceret understøttelsen. Resource hints som preload er en mere kontrollerbar alternativ løsning.
- Hvordan tjekker jeg om mit site bruger HTTP/2 eller HTTP/3?
- Åbn Chrome DevTools og gå til Network-fanen. Reload siden og tilføj kolonnen Protocol — du ser h2 for HTTP/2 og h3 for HTTP/3. Alternativt viser GTmetrix, WebPageTest og Lighthouse Protocol-information. De fleste moderne CDN'er og hostingudbydere aktiverer HTTP/2 som standard — HTTP/3 er mere varieret afhængigt af udbyder og konfiguration.
Placering i ordbogen
- Animation performance — Frame rate og jank-fri bevægelse
- Billedoptimering — Formater, størrelser og SEO
- Browser rendering pipeline — Fra HTML til pixels
- CLS-problemer — Årsager til Cumulative Layout Shift og løsninger
- Core Web Vitals — LCP, INP og CLS forklaret
- CSS — Cascading Style Sheets og SEO
- CSS containment — Isolér rendering og accelerér layout
- Font-optimering — Webfonts, FOUT og SEO
- INP-optimering — Interaction to Next Paint og Core Web Vitals
- JavaScript bundle-optimering — Code splitting, tree shaking og analyse
- Kritisk renderingsti — Hvad browseren gør før du ser noget
- Latency — Forsinkelse i netværket og hvad du kan gøre ved det
- Lazy loading — Udskyd indlæsning af billeder og ressourcer
- LCP-optimering — Sådan forbedrer du Largest Contentful Paint
- Long Tasks og LoAF — Hvad blokerer main thread
- Navigation og resource timings — Browserens performance-API
- PageSpeed og SEO — Hastighed som rankingfaktor
- Performance budgets — Grænser der forhindrer regressioner
- Performance timings — Hvornår er det for langsomt?
- Resource hints — Preload, prefetch og preconnect til SEO
- Responsive images — srcset, sizes og art direction
- Responsivt design — Mobile-first og SEO
- RUM vs. syntetisk monitoring — To syn på web performance
- Service Workers — Offline caching og PWA performance
- Speculative loading — Prefetch og prerender af næste side
- Startup performance — Hurtig app-start og time to interactive
- Tredjeparts-scripts og performance — Impact og strategier
- Tredjepartsscripts — Analytics, ads og performance-konsekvenser
- TTFB og hosting — Server response time og SEO
- Video performance — Lazy loading, formater og indlæsningsstrategi
- Viewport tag — Meta viewport og mobil-rendering
- Web Workers — Parallel JavaScript uden main thread-blokning