...

Hvorfor WordPress mister indlæsningstid med mange webfonte: tips til optimering

Mange WordPress web-skrifttyper indlæses parallelt, blokerer gengivelsen og forlænger dermed LCP og FCP - især på mobile enheder. I denne artikel vil jeg vise dig, hvorfor for mange skrifttyper koster tid, hvordan FOIT/FOUT opstår, og hvilke specifikke foranstaltninger, der vil gøre dit websted mærkbart hurtigere.

Centrale punkter

  • Reduktion til nogle få nedskæringer reducerer anmodninger og dataoverførsel
  • Forspænding og Preconnect prioriterer vigtige filer
  • skrifttype-visning Forhindrer usynlig tekst (FOIT)
  • Lokal Hosting sparer eksterne ventetider og CORS
  • Underinddeling fjerner ubrugte glyffer og gør skrifttyper små

Hvorfor mange webfonte i WordPress koster indlæsningstid

Hver ekstra skrifttype giver yderligere Forespørgsler, flere DNS-opslag og ekstra kilobyte. Flere familier med almindelig, fed og kursiv tilføjer hurtigt op til 500-1000 KB, før teksten vises rent. Det har en direkte effekt på Largest Contentful Paint (LCP), fordi browseren kun kan rendere, når vigtige skrifttyper er tilgængelige. Bare tre skrifttyper kan forlænge den første rendering med 20-50 procent, hvilket rammer brugere med langsomme forbindelser hårdt. Jeg fokuserer derfor på nogle få, klart definerede cuts og sikre fallbacks for at undgå blokering af renderingen.

Hvordan webfonte indlæses i WordPress - og hvor de sidder fast

Webfonte kommer ofte fra eksterne udbydere eller temaindstillinger, hvilket betyder yderligere DNS-opslag og TLS-håndtryk. Med FOIT (Flash of Invisible Text) venter browseren på skrifttyper og viser usynlig tekst indtil da, hvilket forstærker indtrykket af, at „der ikke sker noget“. FOUT (Flash of Unstyled Text) er bedre, men giver korte layoutspring, når der skiftes fra fallback- til webfont. Uden prioritering, preconnect og fornuftig caching øges indlæsningstiden og TTFB-følelsen. Jeg planlægger integrationen, så hovedindholdet altid vises først, og skrifttyperne flyder ind bagefter uden at stamme.

Revision og overvågning: Gør alle skrifttyper synlige

Før jeg optimerer, får jeg et komplet overblik. I DevTools filtrerer jeg på fanen Network efter „Skrifttype“, tjek filnavne, overførselsstørrelser og Initiativtager (tema, plugin, blokeditor). Vandfaldstiderne viser mig, om skrifttyper blokerer den kritiske vej. I dækningspanelet kan jeg se, om store @font-face CSS-blokke kun minimal kan bruges. En performance-trace afslører, om tekstgengivelsen blokerer, indtil WOFF2-filerne er klar. På WordPress-niveau deaktiverer jeg plugins på testbasis for at identificere skjulte skrifttypekilder (sidebygere, ikonpakker). Mine kernemålinger her: antal font-anmodninger, samlet KB, tid til første læsbare linje, FOUT/FOIT-varighed og indvirkning på LCP/FCP i filmstrimlen.

Jeg sammenligner laboratorie- og feltdata: Et hurtigt skrivebord via LAN maskerer problemer, som først bliver synlige i 4G-netværket. Derfor tester jeg med lav CPU- og båndbreddebegrænsning for at simulere realistiske mobilforhold. Først når kæderne er rene, og fallbacks gengives stabilt, tilføjer jeg yderligere typo-fintuning.

Målbare effekter på Core Web Vitals

LCP, FCP og CLS reagerer følsomt på uforsigtig belastning Skrifttyper, fordi forsinkede skrifttyper forskyder layouts og skjuler indhold. Ifølge HTTP Archive overfører sider med webfonte i gennemsnit betydeligt flere data, hvilket er mere mærkbart på mobile enheder. PageSpeed Insights-dokumentationen forklarer tydeligt, at ressourcer, der blokerer for gengivelsen, forlænger vejen til den første visning. Prioriterede anmodninger forkorter denne kæde og reducerer ventetiden mærkbart. Hvis du vil dykke dybere ned i prioritering, kan du finde baggrundsinformation på Prioritering af anmodninger, som jeg bruger specifikt til omfattende temaer.

Tekniske årsager i detaljer

Mange individuelle filer, ikke-kombinerede stilarter og manglende underindstillinger øger Nyttelast unødvendig. Uden HTTP/2 eller HTTP/3 bliver forespørgsler ofte sat i kø og blokerer renderingsstien. Eksterne domæner som fonts.googleapis.com tilføjer yderligere ventetider, som løber op for flere familier. CORS-headers er nødvendige, ellers annullerer browseren preloads eller bruger dem ikke. Jeg forhindrer sådanne snublesten gennem lokal levering, rent indstillede overskrifter og den målrettede begrænsning til to til tre udskæringer.

Undgå typografiske faldgruber: Metrikker, fallback-kvalitet og falske stilarter

Ud over den rene filstørrelse har typografidetaljer indflydelse på skærmens stabilitet. Hvis metrikkerne for fallback- og webfonten er meget forskellige, opstår der synlige spring under udskiftningen. Jeg udligner højden ved at Juster størrelsen og blokere syntetiske stilarter for at forhindre „falsk“ fed/kursiv:

@font-face {
  font-family: 'Inter';
  src: url('/fonts/Inter-roman.var.woff2') format('woff2');
  font-vægt: 100 900;
  font-style: normal;
  font-display: swap;
  /* Juster metrikker for at reducere CLS */
  size-adjust: 100%;
  ascent-override: 90%;
  descent-override: 20%;
  line-gap-override: 0%;
}

/* Visuel harmonisering af fallback-skrifttype */
krop {
  font-family: system-ui, -apple-system, Segoe UI, Roboto, Inter, sans-serif;
  font-size-adjust: 0.5; /* Bedre justering af x-højden */
  font-synthesis: none; /* Forhindrer faux-bold/italic */
}

Jeg definerer en separat akse eller statisk fil til kursivvarianter og undgår falsk kursiv. Jeg organiserer også font-vægt præcist (300/400/600/700), så browseren ikke interpolerer. Dette præcisionsarbejde tager lidt tid, men forhindrer mærkbare layoutændringer, når man skifter fra fallback- til webfont.

Strømlining: tre øjeblikkelige tiltag

Jeg reducerer antallet af familier, erstatter dekorative nedskæringer med fallbacks og bruger konsekvent skrifttype-visningswap. Systemstakke (-apple-system, Segoe UI, Roboto, Noto Sans, Ubuntu, Cantarell) udsender hurtigt tekst, mens webskrifttypen indlæses i baggrunden. Overskrifter kræver normalt kun en fed skrift, brødtekst en almindelig variant. Jeg fjerner også unødvendige fjernopkald for at generere færre anmodninger. Hvis du vil have endnu mere ud af det, kan du Reducer HTTP-anmodninger og dermed aflaste hele den kritiske vej.

Udskift ikon-skrifttyper: SVG gemmer anmodninger

Mange temaer leveres med ikonfonte (f.eks. til sociale ikoner eller UI ikoner). En enkelt ikonfont kan veje mellem 30 og 80 KB og kan være @font-face påvirker gengivelsesstien. Jeg erstatter sådanne skrifttyper med SVG - inline eller som en sprite. Det reducerer forespørgsler, undgår FOIT/FOUT for ikoner og sikrer knivskarp visualisering på alle skærme. Hvis det ikke er muligt at skifte helt med det samme, udvælger jeg ikonfonten til de piktogrammer, der faktisk bruges, og indstiller font-display: valgfri, så siden aldrig venter på ikon-skrifttypen:

@font-face {
  font-family: 'ThemeIcons';
  src: url('/fonts/theme-icons-subset.woff2') format('woff2');
  font-display: optional; /* UI forbliver funktionsdygtig, ikoner dukker op senere */
}

Inline SVG giver mig også mulighed for at styre farver og tilstande via CSS uden at indlæse nye filer. Det passer perfekt til målet om at holde den kritiske renderingskæde så kort som muligt.

Brug forspænding, forkobling og forvarmning korrekt

Jeg bruger Preconnect til det afgørende Domæne, til at prioritere DNS, TCP og TLS. Jeg bruger kun preload til virkelig kritiske WOFF2-filer, ellers spilder jeg prioriteten på sekundære ressourcer. Tagget skal angive as=“font“, type=“font/woff2″ og crossorigin, ellers vil browseren delvist ignorere hintet. For mange preloads saboterer hinanden og skubber vigtigere indhold bagud. Et slankt, testet sæt hints forkorter tiden til den første læsbare linje:

.
.

Host lokalt og forbliv GDPR-kompatibel

Jeg downloader de skrifttyper, jeg har brug for, laver et subset af dem og serverer dem direkte fra min egen Server. Det sparer eksterne DNS-opslag, reducerer CORS-problemer og giver mig fuld kontrol over cachen. En lokal tilgang muliggør lange cache-kørselstider og sikrer konsekvent tilgængelighed. For juridisk klarhed og praktisk implementering er min guide til Google Fonts lokalt. Det er sådan, jeg holder teknologi og databeskyttelse ren uden at ofre typografien.

Subsetting og variable skrifttyper: maksimal effekt med lille størrelse

I stedet for at indlæse komplette sprogpakker beholder jeg kun de nødvendige Glyffer og fjern eksotiske sætninger. Latin uden udvidelser sparer ofte 40-70 procent af filstørrelsen, hvilket især kan mærkes på mobile enheder. Variable skrifttyper erstatter flere statiske filer med en enkelt ressource med akser til vægt og kursiv. Det reducerer forespørgsler og forbedrer prioriteringen, hvis jeg kun forudindlæser én WOFF2-fil. Samtidig bevares den visuelle mangfoldighed uden at skulle overføre fem sektioner hver for sig.

Variable skrifttyper i praksis: målrettet brug af akser

I realiseringen undgår jeg unødigt brede akseområder. Jeg begrænser vægt f.eks. til 400-700, hvis der kun bruges Regular og Bold. Det reducerer kompleksiteten i gengivelsen og bevarer den visuelle konsistens. Til responsiv typografi bruger jeg systematisk numeriske vægte, ikke nøgleord:

@font-face {
  font-family: 'InterVar';
  src: url('/fonts/Inter-roman.var.woff2') format('woff2');
  font-weight: 400 700; /* Smalt interval i stedet for 100-900 */
  font-style: normal;
  font-display: swap;
}

h1, h2 { font-family: 'InterVar', system-ui, sans-serif; font-weight: 700; }
p { font-family: 'InterVar', system-ui, sans-serif; font-weight: 400; }

:root { font-optical-sizing: auto; }
/* Særlige tilfælde pr. akse, hvor det er relevant:
.element { font-variation-settings: 'wght' 650; } */

Det bevarer fleksibiliteten ved en variabel skrifttype uden at belaste systemet med unødvendige mellemtrin.

Hvilken optimering giver hvor meget? (Oversigt)

Følgende oversigt viser, hvad jeg bruger i praksis for at opnå det største Besparelser og hvad jeg er opmærksom på. Værdierne er empiriske intervaller og afhænger af den oprindelige tilstand, temaet og antallet af redigeringer. Jeg tester alle ændringer med PageSpeed Insights og en WebPageTest-kørsel for at genkende bivirkninger. Derefter foretager jeg målrettede justeringer af tærskelværdier og caching. Det øger sikkerheden for, at alle mål får realtidsværdi.

Optimeringsmetode Typiske besparelser Vigtig bemærkning
Reduktion til 2 nedskæringer 150-400 KB Ren Tilbagefald sæt
font-display: swap + hurtigt læsbar tekst Accepter FOUT i stedet for FOIT
Lokal hosting + lang caching 2-3 anmodninger mindre Cache-kontrol/ETag korrekt
Preconnect + målrettet forspænding 50-200 ms Kun kritisk Filer
Underinddeling (latinsk base) 40-70 % mindre Kan udvides på et senere tidspunkt
Variabel skrifttype i stedet for 4 filer -3 Anmodninger Brug kun WOFF2

Brug plugins fornuftigt - uden overhead

OMGF indlæser Google-skrifttyper lokalt, inddeler dem automatisk og forkorter unødvendige Tegn ud. Asset CleanUp giver mig mulighed for at deaktivere skrifttyper side for side, hvis en bestemt skabelon ikke har brug for dem. Autoptimise kombinerer CSS, minificerer og kan udtrække skrifttyper, så kritiske stilarter kommer først. Jeg tester kombinationerne omhyggeligt, fordi overdreven aggregering under HTTP/2 kan være kontraproduktiv. Målet er fortsat en stabil, kort kæde til det første synlige indhold.

Praktisk implementering i WordPress: kodeeksempler

Mange temaer eller sidebyggere inkluderer skrifttyper automatisk. Jeg fjerner dobbelte kilder, skifter til lokale filer og sætter klare prioriteter - helst i child theme.

1) Fjern eksterne skrifttyper fra temaet, og indlæs lokale skrifttyper

/* functions.php i child theme */
add_action('wp_enqueue_scripts', function() {
  /* Tilpas/find eksempler på håndtag i temaet/byggeren */
  wp_dequeue_style('google-fonts');
  wp_deregister_style('google-fonts');

  /* Inkluder dine egne, lokale skrifttyper */
  wp_enqueue_style('local-fonts', get_stylesheet_directory_uri() . '/assets/css/fonts.css', [], '1.0', 'all');
}, 20);

2) Målrettet forspænding til den kritiske WOFF2

/* functions.php */
add_action('wp_head', function() {
  echo '';
}, 1);

3) Indstil caching og CORS-header for skrifttyper

# .htaccess (Apache)
.
  AddType font/woff2 .woff2
.


  Header set Cache-Control "public, max-age=31536000, immutable"
  Header set Access-Control-Allow-Origin "*"
# Nginx (serverblok)
placering ~* .(woff2|woff)$ {
  add_header Cache-Control "public, max-age=31536000, immutable";
  add_header Access-Control-Allow-Origin "*";
  types { font/woff2 woff2; }
}

4) Eksempel på fonts.css med subsets og swap

@font-face {
  font-family: 'Inter';
  src: url('/fonts/InterLatin-400.woff2') format('woff2');
  font-vægt: 400;
  font-style: normal;
  font-display: swap;
  unicode-range: U+000-5FF; /* Latin base */
}

@font-face {
  font-family: 'Inter';
  src: url('/fonts/InterLatin-700.woff2') format('woff2');
  font-vægt: 700;
  font-style: normal;
  font-display: swap;
  unicode-range: U+000-5FF;
}

Flersprogede sider: Indlæs delmængder pr. sprog

Til internationale projekter indlæser jeg kun de nødvendige skrifttyper. I WordPress kan jeg indlæse pr. Lokalitet registrere forskellige stilarter. For eksempel forbliver tysk/engelsk med en smal latinsk delmængde, mens en polsk eller tyrkisk variant får udvidede glyffer - men kun hvor der er brug for det.

/* functions.php */
add_action('wp_enqueue_scripts', function() {
  $locale = get_locale();

  if (in_array($locale, ['de_DE','en_US','en_GB'])) {
    wp_enqueue_style('fonts-latin', get_stylesheet_directory_uri().'/assets/css/fonts-latin.css', [], '1.0');
  } elseif (in_array($locale, ['pl_PL','tr_TR'])) {
    wp_enqueue_style('fonts-latin-ext', get_stylesheet_directory_uri().'/assets/css/fonts-latin-ext.css', [], '1.0');
  }
});

Vigtigt: Jeg sørger for, at brødteksten altid har en solid systemfallback-kæde. Det sikrer, at siden forbliver læsbar, selv hvis en sprogfil fejler, eller en cache er kold.

Hosting, cache og CDN som multiplikatorer

Hurtige NVMe SSD'er, HTTP/3 og et CDN forkorter TTFB og leverer Skrifttyper hurtigere globalt. En cache på serversiden reducerer backend-anmodninger, mens browsercaching henter skrifttyper fra den lokale cache i månedsvis. Brotli til WOFF2 giver næppe mere, men til CSS med @font-face er det stadig umagen værd. Jeg prioriterer også kritiske CSS-dele inline, så teksten vises med det samme. Det skaber en kæde: fast backend, ren levering, mindre fontfiler - og i sidste ende en hurtigere synlig tekst.

Test- og udrulningsplan: gå sikkert i luften

Jeg introducerer skrifttypeoptimeringer trin for trin for at minimere risici. Først dokumenterer jeg status quo (anmodninger, KB, LCP/FCP/CLS). Så reducerer jeg familier og udskæringer, udskifter ikoner og skifter til lokale WOFF2-filer med en lang cache. Så tilføjer jeg Preconnect/Preload - bevidst sparsomt. Efter hvert trin tjekker jeg filmstrimlen for at se, om FOIT er blevet reduceret, og om layoutspring er forsvundet. Først når der ikke kan ses flere regressioner, ruller jeg ændringerne ud til alle skabeloner.

Sider med usædvanlige overskrifter (meget store skriftstørrelser, sporing) eller kraftig brug af kursiv er særligt kritiske. Her tester jeg specifikt, om Juster størrelsen og de metriske overstyringer fanger virkelig fallback-springene. Mit mål forbliver konstant: den første læsbare linje så tidligt som muligt - uden dressurhandlinger på grund af sene skrifttyper.

Kort opsummering: indlæsningstid ned, læsbarhed op

For mange skrifttyper koster værdifuldt Sekunder, fordi de strækker anmodninger, blokerer rendering og øger datamængderne. Jeg holder skrifttyperne slanke, prioriterer specifikt og bruger swap, subsetting og lokal hosting. Dette sænker pålideligt LCP og FCP og reducerer visuelle spring. Med overvågning via PageSpeed Insights og gentagne tests sikrer jeg effekten og indsamler historiske værdier. På den måde forbliver typografien stærk, uden at brugerne skal vente - og det er præcis, hvad jeg ønsker at opnå.

Aktuelle artikler