Latency — Forsinkelse i netværket og hvad du kan gøre ved det
Latency er netværksforsinkelse — tid fra request til første byte. CDN reducerer fysisk afstand. HTTP/2 og HTTP/3 reducerer RTT-overhead. Preconnect eliminerer DNS/TCP-opslagstid for tredjeparts-origins.
Latency er den uundgåelige fysiske begrænsning i web performance: lyset kan kun rejse så hurtigt. En server i Singapore kan ikke svare en dansker på under ~80ms uanset serverens hastighed — det er den fysiske afstand. Latency-optimering handler om at minimere de RTT’er der skal gennemføres inden brugeren ser indhold.
Hvad latency består af
En simpel HTTPS-request gennemgår:
- DNS-opslag — ca. 20-120ms (afhænger af DNS TTL og caching)
- TCP-handshake — 1 RTT
- TLS-handshake — 1-2 RTT (afhænger af TLS-version og 0-RTT support)
- HTTP-request + svar — 1 RTT minimum
En side der fetches fra en server med 100ms RTT kan bruge 400-500ms bare på forbindelsesetablering — inden serveren sender det første byte.
HTTP-protokollens indvirkning
HTTP/1.1 håndterer én request per forbindelse ad gangen (med pipelining som sjælden undtagelse). Browseren åbner op til 6 parallelle TCP-forbindelser per origin — men hver forbindelse kræver sit handshake.
HTTP/2 multiplekser multiple requests over én TCP-forbindelse — eliminerer forbindelses-overhead for ressourcer fra samme origin. Head-of-line blocking er dog stadig et problem på TCP-niveau.
HTTP/3 bruger QUIC over UDP i stedet for TCP. Integreret TLS, elimineret head-of-line blocking, og 0-RTT resumption der genoptager forbindelser uden handshake. Særligt værdifuldt på ustabile forbindelser (mobil).
CDN — den primære latency-løsning
Et Content Delivery Network placerer caches af statisk indhold geografisk nær brugerne. I stedet for at hente fra en server i USA svarer et CDN-edge node i Frankfurt — 10ms i stedet for 100ms.
CDN reducerer latency for:
- Statiske assets (CSS, JavaScript, billeder, fonts)
- Cacheable HTML (statiske sites, SSG)
- Streaming og video
CDN løser ikke latency for dynamisk indhold der ikke kan caches (personaliseret data, live APIs).
Reducer RTT-overhead
Preconnect etablerer DNS, TCP og TLS-forbindelser til tredjeparts-origins tidligt:
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
For Google Fonts eliminerer dette typisk 200-400ms ved første brug.
Keep-Alive genbruger TCP-forbindelser til requests mod samme server. HTTP/1.1 gør dette som default; HTTP/2 og HTTP/3 gør det endnu mere effektivt.
TLS 1.3 og 0-RTT reducerer TLS-handshake til 1 RTT (fra 2 i TLS 1.2) og tillader 0-RTT resumption for returnerende forbindelser.
Mål latency med Navigation Timing
TTFB-beregning via Performance API afspejler den samlede latency til serveren:
const nav = performance.getEntriesByType('navigation')[0];
const ttfb = nav.responseStart - nav.requestStart;
console.log(`TTFB: ${Math.round(ttfb)}ms`);
WebPageTest viser detailed waterfall der dekomponerer DNS, TCP, TLS og request-tider per ressource — det mest præcise tool til latency-debugging. → 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
- HTTP/2 og HTTP/3 — Protokoller der eliminerer latency-overhead
- 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
- 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 latency og RTT?
- Latency er forsinkelsen fra en datapakke sendes til svar modtages. RTT (Round Trip Time) er den samlede tid for én rundtur — request + svar. En server i USA fra en dansk klient har typisk 80-120ms RTT. En server i Danmark har typisk 5-20ms. Lavere RTT = hurtigere TTFB og hurtigere indlæsning.
- Hvad er TCP slow start og hvorfor er det relevant?
- TCP slow start er en congestion-kontrol-mekanisme der begrænser datamængden i de første pakker. En ny TCP-forbindelse starter med at sende ca. 14 KB data og øger gradvist. Det betyder at de første svar er langsomme selv med hurtig server. HTTP/2 og persistente forbindelser reducerer problemet ved at genbruge eksisterende forbindelser.
- Hvad gør preconnect og dns-prefetch ved latency?
- preconnect (<link rel=preconnect href=https://fonts.googleapis.com>) instruerer browseren om at etablere DNS-opslag, TCP-handshake og TLS-handshake til en tredjeparts-origin tidligt — inden ressourcerne faktisk behøves. Det eliminerer 200-400ms latency der ellers opstår første gang en tredjeparts-ressource hentes. dns-prefetch (<link rel=dns-prefetch>) udfører kun DNS-opslaget og er et lettere alternativ for origins der måske bruges. Brug preconnect til kritiske origins (fonts, analytics), dns-prefetch til sekundære.
- Hvad er HTTP/3 og QUIC og hvad gør det ved latency?
- HTTP/3 kører over QUIC-protokollen (UDP-baseret) frem for TCP. QUIC eliminerer TCP-handshake-overhead og håndterer packet loss mere effektivt — ved tabt pakke genoverføres kun den tabte stream, ikke hele forbindelsen som i TCP. Det reducerer latency på dårlige forbindelser og mobile netværk markant. QUIC inkluderer TLS 1.3 built-in og understøtter 0-RTT genoptagelse af tidligere forbindelser. HTTP/3 er tilgængeligt på alle moderne browsere og understøttes af de fleste CDN-udbydere.
- Hvad er TTFB og hvad er en god TTFB?
- TTFB (Time to First Byte) er den målbare konsekvens af server-latency: tiden fra browseren sender en HTTP-request til den modtager den første byte af HTML-svaret. TTFB inkluderer DNS-opslag, TCP-handshake, TLS-handshake og server-processeringstid. Google anbefaler TTFB under 800ms for god LCP. En høj TTFB forsinker alle efterfølgende trin i indlæsningen og er en af de mest impactful performance-problemer at løse fordi den multiplicerer sig med alle ressource-downloads.
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
- HTTP/2 og HTTP/3 — Protokoller der eliminerer latency-overhead
- 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
- 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