Et cache-plugin dækker typisk ét lag: den færdige HTML-side. Det er et fint sted at starte, men det er sjældent der, de store sekunder ligger.
De fire lag
Server-caching gemmer den færdige side, så WordPress ikke skal bygge den forfra ved hver visning. Det er det, de fleste plugins gør.
Browser-caching fortæller den besøgendes browser, at logoet og stilarkene ikke har ændret sig siden sidst. Uden det hentes de igen ved hvert klik.
Database-caching gemmer resultatet af tunge forespørgsler. På en webshop med mange produkter er det ofte her, den længste ventetid gemmer sig.
CDN leverer billeder og filer fra en server tæt på brugeren i stedet for fra din egen.
Sådan ser en rigtig opsætning ud
Vi bruger tre ting sammen, fordi hver af dem løser noget, de andre ikke kan.
LiteSpeed på selve serveren. LiteSpeed cacher hele den færdige side på webserveren i stedet for inde i WordPress. Forskellen er, at forespørgslen aldrig når frem til PHP og databasen. Det er dét, der flytter svartiden fra sekunder til millisekunder — og svartiden tæller direkte med i din PageSpeed-score.
Cloudflare foran siden. Cloudflare har servere over hele verden og leverer dine filer fra den nærmeste. Det sparer rejsetid på hver eneste fil, og det aflaster din egen server, når mange er inde samtidig. Sat rigtigt op kan Cloudflare også svare på hele sider, så din server slet ikke bliver spurgt.
En cache crawler, der holder begge fyldt. Det er den del, næsten alle mangler.
Problemet med en tom cache
Cache bliver tømt hele tiden. Du opdaterer en side, et plugin bliver opdateret, eller indholdet bliver simpelthen for gammelt. Hver gang starter lageret forfra.
Den første besøgende efter en tømning får den langsomme oplevelse — hele turen gennem PHP, databasen og skabelonen. Alle de næste får den hurtige.
Det lyder harmløst, indtil man tænker på, hvem den første besøgende kan være. Måler Google netop dér, ser din hjemmeside langsom ud, selvom den er hurtig resten af døgnet. På en side med lidt trafik kan der gå timer mellem besøgene, og så er cachen tom det meste af tiden.
En cache crawler går dine sider igennem og henter dem, så der ligger en frisk kopi klar — både hos Cloudflare og på din egen server. Dine kunder og Google møder aldrig den tomme cache.
Vi endte med at bygge vores egen, fordi vi ikke kunne finde en tjeneste, der kunne fylde Cloudflares cache ordentligt. Den følger med i et år, når vi laver en hastighedsoptimering.
Hvorfor standardindstillingerne sjældent passer
Et plugin ved ikke, hvad din hjemmeside gør. På en webshop kan aggressiv caching give reelle fejl: gamle priser i kurven, en checkout der viser en anden kundes ordre, eller lagerstatus der ikke passer.
Derfor slår mange plugins caching fra på netop de sider, hvor der er mest at hente — og resten af siden kører videre uoptimeret.
Løsningen er ikke at slå mere til. Det er at sætte reglerne op i hånden: hvad må gemmes, hvor længe, og hvad skal altid hentes friskt. Kurv, checkout og sider med login skal udenom. Resten må gerne caches hårdt.
Hvad du selv kan tjekke
Kør din forside gennem Google PageSpeed Insights og kig efter "Serve static assets with an efficient cache policy". Står den der, mangler du browser-caching, uanset hvilket plugin du har installeret.
Prøv derefter at hente forsiden to gange i træk og se på svartiden. Er den første markant langsommere end den anden, rammer du en tom cache — og så er det ikke flere plugins, der skal til, men en opsætning der holder cachen fyldt.