Dansk hosting fra Aalborg
Servere i Europa
24/7/365 dansk support
support@hostious.io
QUIC.cloud og LiteSpeed 8 min. læsning Opdateret 3. oktober 2026

Cache-undtagelser i LiteSpeed: sider, cookies og roller

LiteSpeed cache-undtagelser: hvilke sider må aldrig caches, og hvordan undtager du dem præcist med URI-, query-, cookie- og rolleundtagelser?

Cache-undtagelser i LiteSpeed: sider, cookies og roller

Kort svar: Nogle sider må aldrig caches offentligt: alt med persondata, formularer med engangstokens og sider med indhold, der skifter pr. besøgende. I LiteSpeed Cache undtager du præcist – pr. URI, query string, cookie, brugerrolle, kategori, tag eller user agent – under fanen Excludes i cache-indstillingerne. Kunsten er at undtage smalt: en undtagelse for meget koster fart på hele sitet, en for lidt viser forkert indhold. Verificér altid med cache-headerne bagefter.

Fagligt gennemgået: 2. oktober 2026

Cache-undtagelser er der, hvor hastighedsopsætning bliver håndværk: WooCommerce-siderne klarer LiteSpeed Cache selv, men kampagnesider med nedtælling, medlemsområder, formularer og landingssider med personaliseret indhold er dit ansvar. Denne guide viser undtagelsestyperne, hvornår hver især er den rigtige – og hvornår du slet ikke skal undtage, men bruge privat cache, ESI eller en kortere TTL i stedet.

Menupunkternes navne og placering kan variere mellem versioner af LiteSpeed Cache. Felterne nedenfor findes i pluginnets cache-indstillinger, typisk på fanerne Excludes og Cache.

Hvad skal undtages – og hvad skal ikke

Skal undtages: sider med persondata eller sessionsindhold ud over WooCommerce-automatikken – fx egne “min side”-løsninger – formularer med engangstokens (nonce), der udløber i cachet HTML, sider med tidsafhængigt indhold (nedtællinger, “kun i dag”-priser) og medlemsindhold bag login uden privat cache.

Skal ikke undtages: almindelige sider “for en sikkerheds skyld”. En kontaktformular med standardopsætning virker fint på cachede sider, og roterende indhold, der gerne må være ens i cache-levetiden, er ingen grund til undtagelse – sæt hellere kortere TTL på den ene side.

Før du ændrer noget: Notér de nuværende værdier i Excludes-felterne, eller eksportér pluginnets indstillinger, så du kan rulle tilbage. Tilføj én undtagelse ad gangen, ryd cachen, og test både den undtagne side og en almindelig side bagefter. En for bred linje kan stille og roligt slå cachen fra på store dele af sitet.

1. Kortlæg de dynamiske sider

Lav en liste over sider, hvor indholdet afhænger af, hvem der ser det, eller hvornår. Gennemgå medlemsplugins, bookingsystemer, formularplugins og kampagnesider. For hver side skal du kunne svare på: Er det hele siden, der er personlig – eller kun en lille del? Er det tid, bruger eller session, der ændrer indholdet? Svaret afgør, hvilken af værktøjerne nedenfor der er den rigtige.

2. Vælg den smalleste undtagelse

TypeFelt i LiteSpeed CacheBrug den til
URIDo Not Cache URIsKonkrete sider eller stier – fx /medlem/ eller /kampagne-live/
Query stringDo Not Cache Query StringsParametre der ændrer indholdet – fx egne filtre; værdien er ligegyldig, navnet tæller
Kategori og tagDo Not Cache Categories / TagsIndlæg i en bestemt kategori eller med et bestemt tag (slug, én pr. linje)
CookieDo Not Cache CookiesBesøgende i en særlig tilstand – fx et medlemsplugins cookie
User agentDo Not Cache User AgentsSærlige klienter, fx et overvågningsværktøj, der skal se en frisk side
RolleDo Not Cache RolesHele brugerroller – fx shop_manager under test

Sådan matcher URI-feltet: Ifølge LiteSpeeds dokumentation er udgangspunktet et delvist match – en linje som /kampagne rammer alle URI’er, der indeholder strengen, også /kampagne-2026/ og /blog/om-kampagne/. Brug ^ foran for at matche fra starten af stien og $ til sidst for et præcist match:

/kampagne-live/$
^/medlem/

Den første linje rammer kun præcis den side. Den anden rammer alt under /medlem/, men ikke en artikel, der bare har ordet “medlem” i slug’en.

Cookie-feltet virker sådan, at en side ikke caches, hvis en af de listede cookies findes i requesten. Det er effektivt – men vælg en cookie, der kun sættes for de relevante besøgende. En cookie, som alle får ved første besøg, slår cachen fra for hele sitet.

Husk også forskellen på “undtag fra cache” og “undtag fra optimering”: går CSS eller JavaScript i stykker på én side, er det optimeringsundtagelserne under sideoptimeringens Tuning-indstillinger, du skal bruge – ikke cache-undtagelser. Se guiden til JavaScript efter defer og delay.

3. Brug kortere TTL i stedet for undtagelse

Mange sider behøver ikke undtages – de skal bare fornyes oftere. LiteSpeed Cache lader dig give enkelte stier deres egen levetid i feltet Force Cache URIs ved at skrive TTL i sekunder efter stien:

/tilbud-i-dag/$ 300

Her caches siden i fem minutter i stedet for standardlevetiden (som er en uge, 604800 sekunder, i pluginnets standardopsætning). Det er ofte det bedste kompromis for nedtællinger og daglige tilbud: siden er hurtig for næsten alle, og indholdet er aldrig mere end få minutter gammelt. Bemærk, at Force Cache URIs også tvinger caching af stien – brug det kun til sider, der må være ens for alle.

4. Undtag én side direkte fra editoren

For enkeltsider er der en enklere vej end URI-feltet: LiteSpeed Options-boksen i WordPress-editoren har en indstilling, “Disable Cache”, som undtager netop det indlæg eller den side. Fordelen er, at undtagelsen følger indholdet, også hvis slug’en ændres. Ulempen er, at den er usynlig i den centrale liste – notér den derfor i din dokumentation.

5. Til udviklere: undtag fra koden

Bygger du selv funktionen, kan koden fortælle LiteSpeed Cache, at det aktuelle svar ikke må caches, skal caches privat eller skal have en bestemt TTL. LiteSpeeds API har hooks til netop det:

// Svaret må ikke caches (årsagen vises i debugloggen)
do_action( 'litespeed_control_set_nocache', 'personligt medlemsindhold' );

// Svaret må kun caches privat for den aktuelle bruger
do_action( 'litespeed_control_set_private', 'brugerspecifik side' );

// Svaret caches i 300 sekunder
do_action( 'litespeed_control_set_ttl', 300, 'kortlivet tilbud' );

Det er den mest præcise løsning, fordi beslutningen træffes præcis dér, hvor koden ved, om indholdet er personligt. Kald hooket, før output sendes.

Tjek, at undtagelsen virker

Terminaleksempel: cache-headere viser hit på normal side og no-cache på undtaget side
Genskabt terminaleksempel, 30. august 2026: den normale side får cache-hit, den undtagne side melder no-cache – præcis som ønsket. Eksemplet er ikke data fra hostious.io.

Headeren x-litespeed-cache-control viser sidens cache-beslutning, og x-litespeed-cache viser hit eller miss. Test som anonym besøgende – i et privat vindue eller med curl:

curl -sI https://ditdomæne.dk/kampagne-live/ | grep -i x-litespeed
curl -sI https://ditdomæne.dk/ | grep -i x-litespeed

Kør hver kommando to gange. Den undtagne side skal melde no-cache hver gang, mens den almindelige side skal gå fra miss til hit. Hele læsningen af headerne står i header-guiden – den er også værktøjet, når problemet er det omvendte: en side, der burde caches, men ikke bliver det, fordi en undtagelse rammer for bredt.

Alternativet: ESI og AJAX

Før du undtager en hel side, så spørg: er det hele siden, der er dynamisk – eller kun en stump? En nedtæller, et navn eller en kurvstatus kan serveres dynamisk i en ellers cachet side med ESI (på en LiteSpeed-server) eller et lille AJAX-kald. Så beholder du cache-gevinsten på resten af siden; fremgangsmåden er beskrevet i WooCommerce-guiden. Undtagelser er til sider, hvor alt er personligt – stumper klares smartere.

Mellemvejen er privat cache: siden caches pr. bruger i stedet for at blive genereret forfra hver gang. Det passer til medlemsområder, hvor den samme bruger ser de samme sider flere gange. Stier, der kun må caches privat, kan angives i feltet Private Cached URIs.

Typiske fejl

  • For bredt URI-mønster: /konto uden ^ og $ rammer også /blog/saadan-opretter-du-en-konto/. Brug ankre.
  • Cookie-undtagelse, der rammer alle: Samtykke- og statistikcookies sættes for næsten alle besøgende. Undtager du på dem, er cachen reelt slået fra.
  • Rolle-undtagelser, der bliver stående: En rolle, der blev undtaget under en test, bliver ofte glemt. Det gør ikke skade for gæster, men giver forkert indtryk af sitets hastighed, når du selv er logget ind.
  • Undtagelse i stedet for fejlrettelse: Viser en side forkert indhold, fordi et plugin skriver personlige data ud for gæster, er undtagelsen et plaster. Den rigtige løsning er at hente stumpen dynamisk.

Verifikation

Undtagelserne er korrekte, når de følsomme sider viser no-cache i headerne ved hvert besøg, resten af sitet stadig får cache-hit, og listen over undtagelser er kort nok til at kunne forklares på ét minut. Gennemgå listen halvårligt: undtagelser fra nedlagte kampagner og slettede plugins har det med at blive stående – og hver unødvendig linje koster cache-hit-rate. Dokumentér hvorfor for hver linje, så oprydningen er ufarlig. Hvordan du måler, om cachen rammer, står i guiden om cache-hit ratio.

Læs også

Ofte stillede spørgsmål om cache-undtagelser

Skal jeg undtage kurv og checkout manuelt?

Nej – med WooCommerce aktivt håndterer LiteSpeed Cache det automatisk. Manuelle undtagelser er til dine egne dynamiske sider, som ingen automatik kender.

Hvorfor virker min formular kun nogle gange?

Klassisk nonce-problem: formularens engangstoken udløber, mens siden ligger i cache, og indsendelser afvises. Løsning: undtag siden, sæt kortere TTL end token-levetiden – eller brug en formularløsning, der henter token via AJAX.

Koster undtagelser på hastigheden?

Kun på de undtagne sider – de leveres af u-cachet PHP ved hvert besøg. Derfor undtager man smalt: hver side på listen er en side, hvor serveren arbejder forfra hver gang.

Hvad er forskellen på privat cache og ingen cache?

Ingen cache betyder, at siden genereres forfra ved hvert besøg. Privat cache gemmer en kopi pr. bruger, så den samme bruger får siden hurtigt næste gang, uden at andre kan se den. Privat cache passer til personlige sider, der ses flere gange; ingen cache til sider, der skal være helt friske hver gang.

Skrevet af Marc, stifter af Hostious

Jeg hedder Marc og har stiftet Hostious. Vi hoster WordPress-hjemmesider og WooCommerce-webshops for danske virksomheder – drevet fra Aalborg-området med servere i Europa – og jeg skriver guiderne her ud fra det, vi ser i driften hver dag.

Udgivet 30. august 2026Opdateret 3. oktober 2026Fagligt gennemgået 2. oktober 2026