Kort svar: LiteSpeed Cache og WooCommerce fungerer godt sammen, når tre ting er på plads: kurv, checkout og Min konto caches aldrig offentligt (det klarer pluginnets WooCommerce-integration automatisk), indloggede kunder får privat cache, og dynamiske stumper som kurvikonet leveres med ESI eller AJAX, så resten af siden stadig kan komme fra cache. Test altid som kunde i et inkognitovindue – aldrig som administrator.
Fagligt gennemgået: 2. oktober 2026
En webshop stiller cache-systemet over for et dilemma: siderne skal være hurtige, men kurven, navnet i headeren og checkout er personlige. LiteSpeed Cache løser det med tre værktøjer – offentlig cache, privat cache og ESI – og de fleste cacheproblemer i WooCommerce handler om, at ét af de tre lag er sat forkert op.
Guiden viser grundopsætningen, hvornår ESI giver mening, de typiske fejlbilleder og hvordan du verificerer, at kunderne aldrig ser hinandens data.
Før du ændrer noget: Tag en eksport af LiteSpeed Cache-indstillingerne (pluginnet har en import/eksport-funktion under værktøjerne), og lav ændringer én ad gangen. Test i et inkognitovindue som almindelig kunde med varer i kurven – som indlogget administrator springer LiteSpeed som udgangspunkt cachen over, så du ser ikke det, kunderne ser.
De tre lag: offentlig, privat og ESI
Offentlig cache er én kopi til alle – velegnet til produktsider, kategorier og indholdssider. Privat cache er en kopi pr. besøgende. Det er LiteSpeed-serverens særlige evne, som gør selv indloggede kunders sider hurtige uden at blande dem sammen.
ESI (Edge Side Includes) deler en side op: skabelonen leveres fra offentlig cache, mens markerede „huller“ – kurvikonet, et velkomstnavn – fyldes med privat indhold ved hver visning. Sammen betyder det, at en webshop ikke behøver vælge mellem fart og korrekthed.
Grundopsætningen for WooCommerce

1. Lad WooCommerce-integrationen gøre arbejdet
Når WooCommerce er aktivt, genkender LiteSpeed Cache automatisk kurv, checkout og Min konto og holder dem ude af offentlig cache. Integrationen følger WooCommerces sidetildeling, ikke URL-mønstre, så danske slugs som /kurv/ og /kasse/ håndteres også. Ryd aldrig op i undtagelseslisterne uden at vide, at automatikken ligger nedenunder.
2. Privat cache for indloggede kunder
Slå „Cache Logged-in Users“ til i cache-indstillingerne. Indloggede brugere får så privat cache – hver kunde sin egen kopi – så faste kunder og B2B-brugere også får hurtige sider. Lad det være slået fra, hvis du har sider med meget hurtigt skiftende personlige data, du ikke har testet.
3. Vary på kurvtilstand
Integrationens vary-mekanisme sørger for, at besøgende med varer i kurven ikke får sider fra cachen for den tomme kurv. Den følger med automatikken, så slå ikke integrationen fra, og fjern ikke LiteSpeeds regler i .htaccess, hvor vary-reglerne ligger (se LiteSpeed og .htaccess).
4. Purge ved ordrer og lagerændringer
Sørg for, at produkt- og kategorisider purges, når lager eller lagerstatus ændres, så „på lager“ og „udsolgt“ følger virkeligheden. LiteSpeed Cache har en WooCommerce-indstilling for, hvornår produkter og kategorier purges ved lagerændringer (Product Update Interval). Menunavnene kan variere mellem pluginversioner, men vælg som minimum, at produktet purges ved ændring i lagerstatus.
ESI til kurvikon og dynamiske stumper
Viser dit tema kurvantal eller kundens navn på alle sider, ville hele sitet i princippet ikke kunne caches. ESI løser det: slå ESI til, og LiteSpeed leverer skabelonen fra cache, mens kurvblokken hentes privat.
Bemærk to forhold. ESI kræver en rigtig LiteSpeed-webserver (som ved LiteSpeed hosting) eller QUIC.cloud som edge. Og hver ESI-blok koster et ekstra delopslag, så brug det til få, små stumper – ikke til halve sider.
ESI-nonces: når formularer fejler på cachede sider
WordPress bruger nonces – kortlivede sikkerhedstokens – i formularer og AJAX-kald. Bliver en side med en nonce cachet i mange timer, kan tokenet være udløbet, når en kunde bruger formularen, og kaldet afvises. LiteSpeed Cache kan levere kendte nonces via ESI, så de altid er friske. Får du fejl som „nonce verification failed“ eller „Link expired“ på cachede sider, så tilføj nonce-navnet til pluginnets ESI-nonce-liste eller sænk sidens TTL.
Cart fragments, mini-kurv og AJAX som alternativ
Uden ESI er alternativet at hente kurvantallet med JavaScript efter indlæsning. Den klassiske metode i WooCommerce er cart fragments, et AJAX-kald, der opdaterer mini-kurven. Siden WooCommerce 7.8 indlæses scriptet ikke længere på alle sider, men kun hvor den klassiske kurv-widget bruges; mini-kurv-blokken i nyere temaer henter i stedet data via WooCommerces Store API.
Det betyder, at mange moderne temaer allerede opdaterer kurvikonet uden ESI. Tjek i browserens Netværk-fane, om kurven opdateres via et AJAX-kald, før du aktiverer ESI for samme stump – to mekanismer til samme opgave giver dobbeltarbejde. Bruger dit tema stadig cart fragments på alle sider og koster det tid, viser guiden til cart fragments, hvordan du begrænser det.
CDN og Cloudflare foran LiteSpeed
Et CDN foran serveren kan undergrave hele opsætningen, hvis det cacher HTML uden at kende WooCommerces cookies. Cacher Cloudflare fx alle sider med en bred Cache Rule, kan en side med en kundes kurv blive leveret til andre. Reglen er enkel: enten cacher kun LiteSpeed HTML’en, mens CDN’et nøjes med statiske filer, eller også skal CDN-reglerne udtrykkeligt springe kurv, checkout, Min konto og besøgende med WooCommerce-cookies over. Se Cloudflare Cache Rules til WooCommerce.
Checkout og Min konto: her hjælper page cache ikke
Checkout, kurv og Min konto bygges altid forfra, så deres hastighed afhænger af PHP, databasen og plugins. Det er dér, en object cache som Redis gør en forskel, fordi gentagne databaseopslag kan hentes fra hukommelsen (se object cache med Redis i LiteSpeed Cache). Hold også PHP opdateret til en aktuel version som PHP 8.3 eller 8.4, og kig efter tunge fragt- og betalingsplugins, hvis selve „Afgiv ordre“ er langsom.
Typiske fejlbilleder
| Symptom | Sandsynlig årsag | Løsning |
|---|---|---|
| Kunder ser hinandens kurv eller navn | Integration slået fra, eller et CDN cacher ovenpå | Slå integrationen til; tjek CDN-regler – se guiden om delt kurv |
| Kurvikonet viser 0 trods varer | Ikonet ligger i cachet HTML uden ESI eller AJAX | Slå ESI til for kurvblokken, eller brug temaets AJAX-opdatering |
| „Udsolgt“ vises på varer på lager | Manglende purge ved lagerændring | Aktivér purge af produkt- og kategorisider ved lagerstatus |
| Formular eller „Læg i kurv“ fejler med nonce-fejl | Udløbet nonce i cachet side | Tilføj noncen til ESI-nonces, eller sænk TTL |
| Checkout føles langsom | Checkout caches aldrig – det er serverens rå fart | Object cache og PHP – se guiden til langsom checkout |
| Ændringer i kurv slår ikke igennem på mobil | Separat mobilcache, der ikke purges | Tjek indstillingen for mobilcache, og purge alt én gang |
Verifikation
Opsætningen holder, når:
- en produktside viser
x-litespeed-cache: hitfor anonyme besøg (andet besøg); - kurv, checkout og Min konto aldrig viser hit, men
no-cacheeller miss; - kurvikonet tæller rigtigt på cachede sider, også efter at du har tilføjet og fjernet en vare;
- et fuldt testkøb i inkognito gennemføres med korrekt navn, fragt og total hele vejen;
- to forskellige browsere med hver sin kurv aldrig ser hinandens indhold.
Læs headerne som beskrevet i guiden til cache-headerne, og gentag testkøbet efter større ændringer i tema, plugins eller CDN-opsætning.
Læs også
- Hub: QUIC.cloud og LiteSpeed Cache
- LiteSpeed Cache-indstillinger: sikker opsætning før finjustering
- Kunder ser hinandens kurv – cache af personligt indhold
- LiteSpeed Guest Mode giver forkert eller blinkende indhold
- Cache-undtagelser i LiteSpeed: sider, cookies og roller
- WooCommerce hosting hos Hostious – staging fra Woo StartUp, så cacheændringer kan testes før live
Ofte stillede spørgsmål om LiteSpeed og WooCommerce
Skal jeg manuelt undtage kurv og checkout?
Nej – WooCommerce-integrationen gør det automatisk, også med danske slugs, fordi den følger sidetildelingen og ikke URL-mønstre. Manuelle undtagelser er kun nødvendige for særlige egne sider med dynamisk indhold.
Virker ESI på al hosting?
Nej – ESI og privat cache kræver en LiteSpeed-webserver (eller QUIC.cloud som edge). På anden hosting kører pluginnet uden de funktioner, og så er AJAX-opdatering af dynamiske stumper alternativet.
Hvorfor er min shop stadig langsom med cache-HIT?
Så er det ikke leveringen, men browserarbejdet, der bremser: billeder, scripts og tredjepartskode. Cache-laget er kun første halvdel – resten handler om billeder, JavaScript og Core Web Vitals.
Skal jeg bruge Guest Mode på en webshop?
Kun efter test. Guest Mode leverer en standardudgave til nye besøgende, før deres egentlige vary er kendt, og på shops med valuta, sprog eller kurv i headeren kan det give blinkende eller forkert indhold. Slå det fra, hvis du ser den slags efter aktivering.
Udgivet 30. august 2026Opdateret 3. oktober 2026Fagligt gennemgået 2. oktober 2026
