Hurtigere hjemmeside hjælp til en langsom hjemmeside

service worker

En service worker er et script browseren kører i baggrunden, uden for siden, som kan intercepte fetch, cache ressourcer og styre offline-adfærd.

Skrevet af Kim Tetzlaff

Kort fortalt: En service worker er et script browseren registrerer fra din origin, som kører i en anden kontekst end selve siden: den kan leve videre når fanen er i baggrunden, og den kan intercepte netværkskald (fetch) og beslutte om svaret skal komme fra netværk, cache eller en blanding. Det er fundamentet bag mange PWA’er (offline, “installér app”, push - sidstnævnte kræver yderligere API’er).

Hvad kan en service worker konkret?

  • Cache strategier: “network first”, “cache first”, “stale-while-revalidate” (ligesom idéen i stale-while-revalidate på HTTP-niveau, men her programmatisk).
  • Forudhentning: hente assets i rolige perioder så næste sidevisning bliver hurtigere.
  • Offline-fallback: vise en statisk side når netværket er nede.
  • Kontrol over opdateringer: versionere cache-lager og invalider ved deploy - hvis du husker det. Glemmer du det, sidder brugere på gammelt indhold.

Hvorfor det betyder noget for performance

Når strategien er veldesignet, kan gentagne besøg og navigation føles markant hurtigere, fordi kritiske skaller (HTML-fragmenter, JS, CSS, billeder) kan serveres fra lokalt lager uden at ramme din origin. Det kan også reducere server- og CDN-last for gentagne requests.

Omvendt kan en dårligt skrevet service worker:

  • serve forældet indhold længe efter deploy;
  • intercepte for bredt og ødelægge API-kald, login eller betaling;
  • køre tung logik og påvirke INP eller batteri på mobil hvis du ikke er disciplineret.

Service worker og HTTP-cache

Cache-Control og browserens HTTP-cache er stadig den primære mekanisme for de fleste statiske assets. Service worker tilføjer et programmatisk lag ovenpå: du kan implementere finmaskede regler, men du betaler i kompleksitet. For mange content-sites er korrekt Cache-Control på versionerede filer + CDN nok; service worker er først interessant når du har offline eller app-lignende krav.

SEO og indeksering

Søgemaskiner forventer stadig serverleveret HTML for indhold der skal indekseres. En service worker ændrer ikke det grundlæggende krav: crawlers skal kunne hente meningsfuldt indhold. Hvis du kun “bygger” indholdet i service worker uden server-render, risikerer du indekseringsproblemer. Brug service worker til performance og cache, ikke som erstatning for synlig HTML fra server.

Relation til bfcache

Back/forward cache og service worker er forskellige lag. bfcache gemmer hele dokumenttilstanden for navigation tilbage/frem; service worker intercepte fetch på tværs af besøg. Nogle headers og livscyklus-valg kan påvirke begge - fx hvis du bruger unload-handlers, kan du skade bfcache uafhængigt af service worker.

Typiske fejl i implementering

  • Cache uden versionsnavne - brugere får gammel JS/CSS efter deploy.
  • Intercept af alle fetch - inklusive analytics eller tredjepart du ikke forstår, hvilket giver mærkelige fejl.
  • Glemme at opdatere når API’er skifter - særligt farligt ved auth.

Relaterede begreber

FAQ

Er service worker det samme som browser-cache?

Nej. HTTP-cache styres af Cache-Control og browserens heuristikker. Service worker er et JavaScript-lag der kan intercepte fetch og implementere egne strategier (fx netværk først, cache først, stale-while-revalidate). De kan sameksistere, men er ikke det samme.

Skal jeg bruge service worker på et almindeligt website?

Kun hvis du har et klart mål: offline, PWA, eller avanceret prefetch. Det øger vedligehold og fejlflade. Mange sites klarer sig med god HTTP-cache og CDN uden service worker.

Næste skridt fra begreb til handling

Guides og blogindlæg der matcher begrebets emne - ud fra fælles tags og sidens fokus.

Om forfatteren

Kim Tetzlaff

Kim skriver og vedligeholder indhold på hurtigere-hjemmeside.dk med fokus på målelig performance, Core Web Vitals og teknisk SEO. Målet er at gøre optimering konkret: hvad der faktisk flytter tal i feltdata, og hvordan du finder den korteste vej fra symptom til fix.

Kim Tetzlaff