Hurtigere hjemmeside hjælp til en langsom hjemmeside

Render-blocking

Render-blocking ressourcer er CSS/JS der forhindrer browseren i at vise indhold tidligt. Ofte en direkte årsag til høj FCP og LCP.

Skrevet af Kim Tetzlaff

Kort fortalt: Render-blocking betyder at browseren venter med at vise indhold, fordi den først skal hente og behandle bestemte CSS- eller JavaScript-filer.

Hvad betyder det?

Browseren stopper tidlig rendering indtil den har hentet og behandlet bestemte ressourcer.

I praksis handler det om “critical path”: hvis browseren ikke kan lave layout og paint, før CSS er klar, vil den ofte vælge at vente. Og hvis JavaScript blokerer parsing eller ændrer DOM tidligt, kan det også forsinke hvad der bliver vist.

Hvilken indflydelse har render-blocking?

Når du har render-blocking ressourcer, ser du ofte:

  • højere FCP (første indhold kommer sent)
  • højere LCP (det vigtigste indhold kommer sent)
  • mere varians mellem besøg (tredjepart og netværk påvirker mere)

På mobil kan det være ekstra tydeligt, fordi CPU og netværk er langsommere.

Hvornår opstår render-blocking typisk?

De mest almindelige scenarier:

  • store globale stylesheets der loader i <head>
  • mange plugins/tema-assets i CMS’er
  • scripts der ligger i head uden defer
  • frameworks der loader meget JS tidligt før første paint

Typiske årsager

  • Stor CSS uden critical split
  • Synkron JavaScript i head

Typiske forbedringer

  • Extract critical CSS
  • Udskyd ikke-kritisk JS (defer) og CSS (media/async patterns)

Sådan identificerer du render-blocking (praktisk)

  • PageSpeed Insights/Lighthouse: “Eliminate render-blocking resources”
  • DevTools Network: se hvilke CSS/JS der starter tidligt og hvor store de er
  • DevTools Performance: se om der går lang tid før første paint, og hvad der kører

Det vigtigste er at finde: hvilke ressourcer der ligger i den kritiske sti, og om de reelt er nødvendige for første viewport.

Konkrete optimeringer (i prioriteret rækkefølge)

1) Critical CSS (above the fold)

I stedet for at blokere med alt CSS kan du:

  • inline kritisk CSS for første viewport
  • load resten efterfølgende

Det reducerer ventetid før første render.

2) Udskyd ikke-kritisk JavaScript

Hvis scripts ikke er nødvendige for første paint:

  • brug defer (eller load efter DOMContentLoaded)
  • split bundles og undgå store “global init”-scripts

3) Fjern unused CSS/JS

På mange sites er der assets der ikke bruges på den konkrete side, men stadig bliver loadet.

Konkrete ting:

  • load kun CSS/JS hvor det bruges (route-level)
  • ryd op i plugins og tredjepart

4) Pas på tredjepart i head

Consent/AB-test/analytics kan være “render-blocking” indirekte, hvis de:

  • injicerer styles/scripts tidligt
  • laver DOM-manipulation før paint

Udskyd og begræns hvor det giver mening.

Tjekliste

  • De vigtigste sider har minimal CSS/JS i critical path
  • Ikke-kritisk JS er deferred
  • CSS er delt i critical + resten
  • Unused assets er fjernet eller gjort betingede

FAQ

Er render-blocking altid “forkert”?

Nej. Kritisk CSS er ofte nødvendigt for at browseren kan lave layout og paint korrekt.

Problemet opstår når du blokerer med **store** ressourcer der ikke er nødvendige for første viewport – fx et kæmpe globalt stylesheet eller synkron JavaScript i `<head>`.

Målet er ikke “ingen blocking”, men “kun det der er nødvendigt tidligt”.

Hvorfor flytter LCP sig ikke selvom jeg defer’er scripts?

Fordi LCP også kan være begrænset af CSS, billeder, TTFB eller paint/CPU.

`defer` kan fjerne én type blokering (synkron JS der stopper parsing), men hvis CSS stadig er render-blocking, eller hvis LCP-ressourcen opdages sent, kan LCP være uændret. Brug waterfall og LCP-opdelingen i Lighthouse til at se om flaskehalsen er netværk, discovery eller render delay.

Hvad er den mest robuste løsning på render-blocking CSS?

At splitte det du har brug for “above the fold” fra resten.

Praktisk betyder det typisk: et lille kritisk lag (critical CSS) til header/hero/typografi, og så resten af CSS efterfølgende. Det er ofte mere holdbart end mange små hacks i `<head>`.

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