BlogHastighed

Hvorfor er min WordPress-hjemmeside langsom?

En langsom WordPress-hjemmeside har sjældent kun én årsag. Se de typiske årsager, fra hosting og cache til billeder og scripts, og mål, før du retter.

Illustration: et browservindue, hvor siden kun er halvt indlæst, ved siden af fire bjælker mærket Server, Plugins, Billeder og Scripts, der viser, at ventetiden kan ligge flere steder.
Indhold i artiklen

Din hjemmeside føles tung. Siderne er længe om at komme frem, og måske har du prøvet en hastighedstest, som gav en rød score. Så melder spørgsmålet sig: Hvad er der galt?

Det ærlige svar er, at der sjældent kun er én årsag. WordPress’ egen dokumentation nævner blandt andet hostingmiljøet, opsætningen af WordPress og softwareversionerne som forhold, der påvirker hastigheden. Derfor giver det mening at finde årsagen, før du køber en større server, installerer endnu et plugin eller bestiller en helt ny hjemmeside.

Her gennemgår jeg de typiske årsager i den rækkefølge, jeg vil råde dig til at undersøge dem, og hvordan du selv kan få et første overblik.

Mål først, og mål det rigtige

Googles gratis værktøj PageSpeed Insights er et fint sted at starte. Det viser to slags tal, og forskellen på dem er vigtig.

Feltdata

Kommer fra
Rigtige besøgende i Chrome.
Dækker
De seneste 28 dage.
Bedst til
At prioritere, fordi tallene viser, hvad dine besøgende faktisk oplever.
Vær opmærksom på
Sider med få besøg har ikke altid nok data.

Laboratoriedata

Kommer fra
Én test i et kontrolleret miljø.
Dækker
Én enhed og én forbindelse, lige nu.
Bedst til
Fejlfinding, og til at se med det samme, om en ændring gjorde en forskel.
Vær opmærksom på
Resultatet varierer fra test til test.
To slags tal i samme værktøj. De måler forskellige ting og kan sagtens være uenige om den samme side.

Har du begge slags tal for en side, anbefaler Googles vejledning på web.dev som hovedregel, at du prioriterer ud fra feltdata. Laboratorietesten bruger du bagefter til at finde årsagen.

Har siden få besøgende, er der ikke altid feltdata nok. Så viser værktøjet tal for hele webstedet eller slet ingen feltdata. I det tilfælde har du kun laboratorietesten, og den skal læses som et pejlemærke, ikke som sandheden om alle besøg.

Google bruger tre mål, Core Web Vitals, til at beskrive en god oplevelse:

  • LCP (Largest Contentful Paint): Det største indholdselement skal være vist inden for 2,5 sekunder.
  • INP (Interaction to Next Paint): Siden skal reagere på klik og tryk inden for 200 millisekunder.
  • CLS (Cumulative Layout Shift): Indholdet må ikke hoppe rundt, mens siden indlæses. Målet er 0,1 eller derunder.

Målet er, at mindst 75 % af sidevisningerne holder sig inden for grænserne, opgjort hver for sig for mobil og computer.

Mit råd er ikke kun at teste forsiden. En produktside, en kategoriside og et blogindlæg kan være bygget vidt forskelligt, og det er ikke sikkert, at problemet ligger det samme sted.

Fra klik til vist side: her kan tiden gå

Når du ved, at siden er langsom, er næste spørgsmål, hvor ventetiden opstår. Det hjælper at kende vejen fra et klik til en færdig side. Resten af artiklen følger den vej.

  1. Browseren spørger

    Den besøgende klikker, og browseren beder din server om siden.

  2. Serveren svarer

    WordPress bygger siden med PHP og databasen, eller sender en færdig kopi fra cachen.

    Se på: hosting, PHP-version og cache.

  3. Filerne hentes

    Browseren henter billeder, skrifter og scripts, også dem fra andre servere.

    Se på: billeder, plugins, tema og scripts udefra.

  4. Siden kan bruges

    Det største element er vist, og siden reagerer, når man trykker.

    Måles med: LCP og INP.

Forenklet forløb. Er trin 2 langsomt, bliver alt efter det forsinket. Derfor begynder undersøgelsen dér.

Serveren er længe om at svare

Før browseren kan vise noget som helst, skal serveren sende det første svar. Den ventetid kaldes TTFB (Time to First Byte). web.dev nævner 0,8 sekunder eller derunder som en grov rettesnor. TTFB er ikke selv en af de tre Core Web Vitals, men Googles vejledning om LCP skriver, at en høj TTFB kan gøre det svært eller ligefrem umuligt at nå en LCP på 2,5 sekunder.

Det er værd at hæfte sig ved. Er det første svar langsomt, hjælper det kun lidt at komprimere billeder. Så er det hosting, cache og softwareversioner, du skal se på først.

På et delt webhotel ligger din side på en server sammen med mange andre, og WordPress’ dokumentation gør opmærksom på, at hostingen har betydning for, hvilke optimeringer der er mulige. Det betyder ikke, at svaret altid er en dyrere server. Det betyder, at hosting hører med i undersøgelsen. Jeg har skrevet mere om, hvad jeg selv tilbyder, på siden om serverhosting.

WordPress-versionen og PHP-versionen er to forskellige ting

Softwareversioner er nævnt flere gange ovenfor, og der er to, som ofte bliver blandet sammen.

WordPress-versionen

Hvad det er
Selve systemet, du logger ind i.
Hvor den opdateres
Inde i WordPress. Det samme gælder tema og plugins.
Hvor du ser den
I WordPress under Værktøjer, i Site Health på fanen Info.

PHP-versionen

Hvad det er
Programmeringssproget, WordPress er skrevet i. Det kører på serveren.
Hvor den skiftes
Hos din hostingudbyder, ikke inde i WordPress.
Hvor du ser den
Samme sted, i afsnittet Server.
To versioner, to steder. Den ene hører til WordPress, den anden til hostingen.

WordPress skriver, at det er din hostingudbyder, der bestemmer, hvilke PHP-versioner du kan vælge, og at mange udbydere lader dig skifte selv.

WordPress’ dokumentation skriver, at softwareopdateringer ofte retter fejl og forbedrer ydeevnen, og kalder det afgørende at køre de nyeste udgaver af blandt andet PHP og databasen. PHP’s udviklere understøtter hver udgave i fire år: to år med fejlrettelser og derefter to år, hvor kun kritiske sikkerhedsfejl bliver rettet. Når de fire år er gået, er udgaven ikke længere understøttet, og PHP anbefaler at opgradere så hurtigt som muligt.

De to hænger sammen. WordPress vedligeholder en oversigt over, hvilke PHP-versioner hver WordPress-version er testet med. Mit råd er at se på den oversigt og på dine plugins, før PHP-versionen bliver skiftet, og at prøve skiftet på en kopi af siden først. Jeg nævner bevidst ingen versionsnumre her, for de ændrer sig. Se de aktuelle i kilderne nederst.

Siden bliver bygget forfra ved hvert besøg

WordPress sammensætter som udgangspunkt en side med PHP og opslag i databasen, når nogen beder om den. En cache gemmer det færdige resultat. WordPress’ dokumentation beskriver, hvordan cache-plugins gemmer indlæg og sider som statiske filer, der sendes til de besøgende, så serveren skal arbejde mindre.

Dokumentationen peger på cache som det sted, hvor en hurtig indsats giver størst gevinst for mindst besvær. Men den skal sættes rigtigt op. Har du en webshop, må kurven, kassen og Min konto ikke caches. WooCommerce skriver i sin dokumentation, at de sider skal blive ved med at være dynamiske, fordi de viser oplysninger om den enkelte kunde og kundens kurv.

En forkert opsat cache kan altså give fejl, der er værre end en langsom side. Mit råd er derfor at teste et køb fra ende til anden, hver gang cachen er ændret.

Billederne er tungere end nødvendigt

På mange sider er det største element et billede, og så er det billedet, der afgør LCP. Et topbillede, der vises i større opløsning end nødvendigt, kan fylde langt mere, end skærmen har brug for.

WordPress’ dokumentation anbefaler at vælge det rigtige format og den rigtige komprimering til hvert billede og at overveje et moderne format som WebP, der fylder mindre.

Der er også en fælde den anden vej. Lazy loading, hvor billeder først hentes, når de er ved at komme ind på skærmen, er nyttigt længere nede på siden. Men web.dev er meget direkte: LCP-billedet må aldrig lazy-loades, fordi det forsinker netop det billede, der skal vises først.

Plugins og tema gør for meget

Ifølge WordPress’ dokumentation har temaet stor betydning for hastigheden, og det samme har antallet af plugins og hvor tungt de arbejder. Rådet derfra er enkelt: Deaktivér og slet de plugins, du ikke bruger, og prøv at slå udvalgte plugins fra for at måle, om de trækker siden ned.

Mit råd er at gøre det på en kopi af siden, hvis du har en. At slå plugins fra på en webshop, mens kunderne handler, er ikke en test, du har lyst til at lave.

Antallet er ikke hele forklaringen. Et enkelt plugin, der indlæser sine filer på alle sider, selv om det kun bruges på kontaktsiden, kan betyde mere end flere små. Det er en tommelfingerregel og ikke et måltal; hvad der gælder på din side, ser du ved at måle med og uden. Oprydning af den slags hører naturligt sammen med vedligehold af siden.

Scripts udefra bremser siden

Statistik, annoncer, delingsknapper til sociale medier og indlejrede videoafspillere bliver hentet fra andre servere end din egen. web.dev beskriver, hvordan den slags tredjepartsscripts kan gøre en side langsommere, blandt andet fordi de udløser mange netværkskald og sender meget JavaScript, der holder browseren beskæftiget.

Gå listen igennem, og spørg for hvert script, om det stadig bliver brugt. Et sporingsscript fra en kampagne, der sluttede for længe siden, koster stadig tid ved hvert besøg.

Hvad en god score ikke fortæller

Google anbefaler gode Core Web Vitals, både af hensyn til søgning og til brugeroplevelsen generelt. På siden om sideoplevelse oplyser Google, at Core Web Vitals bruges af rangeringssystemerne, men også, at søgemaskinen altid forsøger at vise det mest relevante indhold, også når sideoplevelsen ikke er i top. Gode tal er altså ikke i sig selv en garanti for en topplacering.

Målet er derfor ikke 100 i laboratorietesten. Målet er, at dine besøgende ikke skal vente, og at siden bliver ved med at fungere, mens den bliver hurtigere.

Hvor skal du begynde?

Vil du selv i gang, er det her den rækkefølge, jeg vil foreslå:

  1. Mål to eller tre vigtige sidetyper Brug PageSpeed Insights, og notér, om tallene er feltdata eller laboratoriedata.
  2. Se på serverens svartid Er den høj, så begynd med hosting, cache og softwareversioner.
  3. Find ud af, hvad LCP-elementet er Er det et billede, så se på størrelse, format og indlæsning.
  4. Gennemgå plugins og scripts udefra Fjern det, der ikke bliver brugt.
  5. Ret én ting ad gangen Mål igen på samme måde. Ellers ved du ikke, hvad der virkede.
Fem trin. Tag dem oppefra. De første fortæller, om de næste er umagen værd.

Noget af det kan du selv klare. Andet kræver adgang til server, tema og kode, og nogle gange viser det sig, at en mindre rettelse ikke er nok, og at der skal en større forbedring til. Er du i tvivl om, hvor grænsen går, har jeg skrevet om det i Ny hjemmeside, eller kan den gamle forbedres?

Vil du hellere have mig til at se på det, kan du læse om hastighedsoptimering. Du er også velkommen til at skrive til mig via kontaktsiden. Send et link til siden, og fortæl, hvor du oplever, at den er langsom, så vender jeg tilbage på mail.

Spørgsmål og svar.

Hvorfor får jeg forskellige tal, hver gang jeg tester?

En laboratorietest er én måling fra én enhed og én forbindelse, og Google oplyser selv, at resultatet varierer med blandt andet netværket og belastningen på den maskine, der tester. Kør derfor testen flere gange, og sammenlign kun målinger, der er lavet på samme måde.

Hvorfor viser PageSpeed Insights ingen feltdata for min side?

Feltdata kræver, at siden har haft nok besøgende i Chrome de seneste 28 dage. Er siden ny, eller er der for få besøg, viser værktøjet i stedet tal for hele webstedet, og er der også for få dér, vises der ingen feltdata. Så har du kun laboratorietesten at gå ud fra.

Skal jeg installere et cache-plugin, hvis min hosting allerede har cache?

Find først ud af, hvad din hosting gør i forvejen. WordPress' dokumentation skriver, at mulighederne afhænger af hostingen. Mit råd er at spørge udbyderen, før du lægger et cache-plugin ovenpå, så de to lag ikke modarbejder hinanden.

Bliver siden hurtigere med et CDN?

Et CDN lægger kopier af statiske filer, for eksempel billeder, på servere flere steder i verden, så de kan hentes tættere på den besøgende. Det hjælper på filerne. Mit råd er at se det som et supplement til cache og en ordentlig hosting, ikke som en erstatning.

Hvor længe går der, før en forbedring kan ses i tallene?

I en laboratorietest kan du se forskellen med det samme. Feltdata i PageSpeed Insights opdateres dagligt, men dækker altid de seneste 28 dage. Derfor kan der gå op til cirka fire uger, før en ændring er slået helt igennem i de tal.

Hvad kan jeg selv gøre, og hvornår har jeg brug for hjælp?

Du kan selv måle siderne, rydde op i plugins, du ikke bruger, og lægge mindre billeder op. Ændringer i server, cache, tema og kode kræver adgang og kan give fejl på siden, hvis de bliver gjort forkert. Dér giver det mening at få hjælp eller i det mindste at teste på en kopi først.

Kilder

  1. WordPress.org: Optimization (hosting, tema, plugins, cache, billeder og CDN)
  2. WordPress.org: Requirements (hvad serveren skal kunne, og anbefalede versioner)
  3. WordPress.org: Get a faster, more secure website: update your PHP today (hvor du ser PHP-versionen, og at den skiftes hos hostingudbyderen)
  4. WordPress.org: Site Health screen
  5. PHP: Supported Versions (hvor længe hver PHP-udgave bliver understøttet)
  6. WordPress Core Handbook: PHP Compatibility and WordPress Versions
  7. web.dev: Web Vitals (LCP, INP, CLS og grænseværdier)
  8. web.dev: Why lab and field data can be different (and what to do about it)
  9. web.dev: Time to First Byte (TTFB)
  10. web.dev: Optimize Largest Contentful Paint (LCP-billedet, lazy loading og betydningen af TTFB)
  11. web.dev: Load third-party JavaScript
  12. Google: About PageSpeed Insights (feltdata, laboratoriedata og variation mellem målinger)
  13. Google Search Central: Understanding Core Web Vitals and Google search results
  14. Google Search Central: Understanding page experience in Google Search results
  15. WooCommerce: How to configure caching plugins for WooCommerce
Tobias Magnussen

Skrevet af

Tobias Magnussen

Freelance webudvikler

Jeg står bag TurboTobias og arbejder med design, webudvikling og teknisk drift. Jeg hjælper både med nye hjemmesider og webshops og med at bygge videre på løsninger, der allerede findes.

Til blogoversigten