Hurtigere hjemmeside hjælp til en langsom hjemmeside

Long Task

En long task er arbejde på main thread der typisk varer >50ms og kan gøre siden langsom at interagere med.

Skrevet af Kim Tetzlaff

Kort fortalt: En long task er en periode hvor main thread er optaget så længe, at browseren ikke kan reagere hurtigt på input eller male frames. Tommelfingerreglen er ofte >50 ms.

Hvorfor betyder det noget?

Hvis main thread er blokeret, kan browseren ikke male, scrolle eller reagere hurtigt.

Det rammer især:

  • klik/tap (INP)
  • scroll (hakker)
  • input (tekst “lagger”)

Hvilken indflydelse har long tasks?

Long tasks er en af de mest direkte årsager til:

  • dårlig INP
  • dårlig oplevet respons
  • “tung” følelse på mobil

Hvis du kun ændrer netværk (CDN/caching), kan du stadig have dårlig INP, hvis long tasks dominerer ved interaktion.

Hvornår blev long tasks et fokus?

Da moderne webapps begyndte at køre mere JavaScript i browseren, blev det tydeligt at CPU-arbejde kunne være en større flaskehals end netværk – især på mobil. Long tasks er en praktisk måde at se “hvorfor” interaktioner bliver forsinket.

Typiske årsager

  • Tunge JavaScript-bundles
  • Store frameworks/komplekse komponenter
  • For mange tredjeparts scripts

Typiske forbedringer

  • Split code og fjern unødvendig JS
  • Brug requestIdleCallback / web workers hvor relevant
  • Optimer rendering og event handlers

Sådan finder du long tasks (praktisk)

1) DevTools Performance

  • start en optagelse
  • udfør en interaktion (menu, søgning, filter)
  • kig efter “Long task” og se stack traces for hvad der kører

2) Kig efter mønstre

Typiske mønstre:

  • parsing/evaluation af store JS bundles
  • rendering loops (komponenter rerenderer for meget)
  • tredjepart der kører timers eller observers aggressivt

Konkrete optimeringer (i prioriteret rækkefølge)

1) Reducér bundle og JS i critical path

  • fjern dependencies
  • code splitting
  • begræns hydration

2) Optimer event handlers

  • undgå tungt arbejde i click/scroll/input handlers
  • throttle/debounce hvor det giver mening
  • batch DOM reads og DOM writes

3) Flyt arbejde væk fra main thread

  • web workers til tung beregning
  • requestIdleCallback til ikke-kritisk arbejde

4) Skær tredjepart ned

Tredjepart er ofte “udenfor din kontrol”, så den mest effektive løsning er:

  • fjern
  • udskyd
  • begræns

Tjekliste

  • De vigtigste interaktioner er optaget i Performance trace
  • Top 3 long task-kilder er identificeret
  • JS bundle er reduceret/splittet
  • Tredjepart er gennemgået

Hvorfor long tasks ofte overses

Mange teams fokuserer først på netværk og billeder. Det er vigtigt, men long tasks opstår typisk i CPU-laget og er mindre synlige uden tracing. Derfor kan et site have “ok” loadtid, men stadig føles trægt ved interaktion.

Long tasks og forskellen mellem lab og virkelige brugere

I lab kan du få pæne tal på hurtig maskine, mens rigtige brugere på mobil oplever lag. Det skyldes ofte:

  • langsommere CPU på enheder
  • flere baggrundsprocesser på telefonen
  • svagere netværk, som skubber flere scripts tættere på første interaktion

Derfor bør du validere på fysisk mobil eller realistisk throttling.

Hvilke typer kode skaber ofte long tasks?

Tunge init-sekvenser

Når en side initialiserer meget JS på én gang, kan første interaktion rammes.

Store rendering-opdateringer

Hvis mange komponenter rerenderer i samme frame, får browseren mindre tid til input.

Synkrone loops over store datamængder

Filtrering/sortering direkte på main thread kan være dyrt, især ved gentagne input-events.

Praktisk arbejdsmetode i teams

En enkel metode der virker:

  1. Vælg 2-3 kritiske interaktioner.
  2. Optag traces og identificér top long tasks.
  3. Lav små ændringer med tydelig hypotese.
  4. Mål igen og dokumentér effekt.

På den måde undgår du at lave “performance-arbejde” uden målbar forbedring.

Konkrete tegn på forbedring

Efter gode ændringer ser du ofte:

  • kortere script tasks omkring interaktion
  • færre blokeringer af input
  • mere stabil respons på mobil

INP bliver mere robust, fordi worst-case interaktioner forbedres.

Ekstra tjekliste til release

  • Kritiske interaktioner er testet på mobil
  • Long tasks er reduceret i de vigtigste flows
  • Tredjeparts scripts er vurderet og begrænset
  • Der er dokumenteret før/efter traces
  • Ændringerne giver ikke funktionelle regressioner

FAQ

Kan long tasks være “ok”?

Korte spikes kan ske. Problemet er når long tasks overlapper med brugerinteraktioner, eller når de sker tidligt så siden føles tung.

I praksis er “ok” ofte et spørgsmål om *timing*: en long task midt i et klik på menuen er langt værre end en tilsvarende opgave mens brugeren alligevel læser.

Er long tasks altid JavaScript?

Ofte ja – men ikke kun.

Layout, style recalculations og andre rendering-opgaver kan også være dyre. En Performance trace viser typisk præcist hvad der fylder, så du kan se om det er scripting, rendering eller noget tredjepart.

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