Dansk hosting fra Aalborg
100% CO₂-neutral hosting
24/7/365 dansk support
support@hostious.io
● Hostious viden · artikel

LiteSpeed viser gammelt indhold efter en opdatering

Skrevet af , stifter af Hostious · Udgivet 28. august 2026 · Opdateret 30. august 2026
LiteSpeed viser gammelt indhold efter en opdatering

Kort svar: Tilføj en unik, ufølsom testmarkør på staging, og sammenlign indlogget preview, anonym browser, en cache-bypasset request og den normale URL. Gem X-LiteSpeed-Cache, X-QC-Cache, Age, Cache-Control og eventuelle proxyheaders. Purge først den konkrete URL eller cachetag. Hvis det ikke virker, ligger den gamle kopi i et andet lag eller purge-eventet mangler. Kortere TTL eller gentagen Purge All skjuler kun årsagen.

Fagligt gennemgået: 28. august 2026 Kontrolgrundlag: WordPress 7.1, LiteSpeed Cache 7.9, PHP 8.4.23 og Chrome 151 på isoleret staging. QUIC.cloud-integration og quota er ikke aktiveret eller verificeret; edge- og CDN-trin skal derfor efterprøves i dit eget miljø.

Stale content kan komme fra browserens HTML-cache, LiteSpeed page cache, QUIC.cloud/andet CDN, service worker, object cache eller selve databasen/templatebyggeren. Hvert lag har forskelligt bevis. Find laget, før du tømmer alt.

Opret en markør, der kan spores

Brug staging eller et ufarligt tekstfelt. Tilføj fx en intern testmarkør med dato/tid, gem, og notér post-ID. Brug ikke et kundenavn, en rabatkode eller andre forretningsdata. Kontrollér først i editor/preview, at databasen faktisk indeholder den nye værdi.

Diagnosematrix

Symptom/fundSandsynlig årsagKontrolNæste skridt
Hard reload viser nyt, normal reload gammeltBrowsercache/service workerCache-Control og DevTools Disable cacheRet HTML-/service-worker-strategien
Bypass viser nyt, normal LiteSpeed hit gammeltLiteSpeed page cache er staleMarkør og targeted purge-logPurge URL/tag og find manglende event
Origin viser nyt, edge viser gammeltCDN/proxy er staleAge og QC-/CDN-headerPurge det konkrete edgeobjekt og ret integrationen
Alle anonyme svar gamle, editor nytBuilder/render/template-cacheHTML source og generated assetsRet den konkrete builder-/rendercache
HTML nyt, komponent gammelESI/shortcode/object cache/APIDOM, AJAX og komponentdataPurge eller versionér komponentens egen cache
Purge virker kort, problemet vender tilbageForkert cachekey eller re-genereringVary, crawler og updater-eventPause ejeren på staging og ret dens input

1. Skel browsercache fra servercache

Åbn DevTools → Network → Disable cache og genindlæs. Kontroller, om requesten faktisk når serveren. Hvis X-LiteSpeed-Cache slet ikke findes på det gamle svar, kan browseren levere HTML uden ny request. Serverregler må ikke sætte lang browser-Expires på HTML; langtidsbrowsercache er normalt til versionsbestemte statiske filer.

Test også en ny privat browser. En hard reload er en diagnose, ikke en løsning for alle besøgende.

LiteSpeed Cache 7.9 viser browsercache og dens TTL
LiteSpeed Cache 7.9 på isoleret staging, aflæst 28. august 2026. UI-baseline; den viste indstilling beviser ikke, hvilket cachelag der leverer gammelt HTML.

2. Purge den konkrete URL eller tag

Brug LiteSpeed Toolbox → Purge By URL eller den relevante post/tag-funktion. Genindlæs anonymt. Det første svar skal være miss med den nye markør; det næste hit med samme indhold.

Purge All LSCache kan bruges, når en bred relation faktisk er ændret, men er ikke første trin. “Empty Entire Cache” kan berøre andre webapplikationer og er sidste udvej.

LiteSpeed Toolbox viser målrettet purge og de brede purgehandlinger
LiteSpeed Cache 7.9 på isoleret staging, aflæst 28. august 2026. UI-baseline; billedet forklarer valgene og dokumenterer ikke, at en purge blev udført eller løste fejlen.

3. Find det manglende purge-event

LiteSpeed tagger posts og relaterede arkiver og purger normalt ved WordPress-events som save/edit/delete. Hvis en tredjepartsintegration opdaterer data direkte, kan WordPress-hooket mangle. Reproducer med debuglog og se, om post/tag-purge blev udløst ved gemning.

Udvikleren skal derefter kalde LiteSpeeds purge-/tagintegration på det rigtige event. Tilføj ikke en global Purge All ved hvert besøg eller croninterval; det fjerner cachegevinsten og kan skabe belastning.

Skel gammel databaseværdi fra gammel rendering

Start ved kilden, før cachelagene mistænkes. Åbn den gemte post eller indstilling i WordPress, og kontroller post-ID, revisionsdato og det felt, som templaten faktisk læser. Pagebuildere, oversættelser og WooCommerce kan have flere felter eller sprogversioner, der ligner hinanden. Hvis preview også viser den gamle værdi, er problemet ikke den offentlige page cache.

Kontroller derefter offentlig HTML-kilde, ikke kun det visuelle DOM-resultat. Hvis den nye tekst findes i HTML, men browseren viser noget andet, kan CSS, JavaScript eller en efterfølgende API-request overskrive den. Hvis HTML er gammel på origin, ligger ejeren i WordPress-rendering, template-/fragmentcache eller objektcache. Hvis origin er ny og edge er gammel, er CDN-laget bekræftet. Denne rækkefølge forhindrer, at en database- eller builderfejl “løses” med gentagne cachepurges.

Test service worker og offline-cache

Progressive web-app-plugins og visse temaer kan registrere en service worker, som svarer før netværket. I DevTools → Application kontrolleres, om en service worker styrer siden, og Network viser, om svaret kommer “from ServiceWorker”. Afregistrer den kun i den isolerede testbrowser, genindlæs og sammenlign. Det ændrer ikke andre besøgendes tilstand og er derfor et sikkert diagnosepunkt.

Hvis service workeren er ejeren, skal dens versions- og opdateringsstrategi rettes. En serverpurge kan ikke slette HTML, som allerede ligger i en besøgendes offline-cache. Publicer ikke en løsning, der beder alle brugere rydde hele browseren; det flytter ansvaret til brugeren og løser ikke næste udgivelse.

4. Skel CDN fra origin

Sammenlign den normale edge-URL med en godkendt origin-test. X-QC-Pop, X-QC-Cache, Age eller anden CDN-header viser, hvilket lag der svarede. Purge origin opdaterer ikke nødvendigvis edge, og edge purge opdaterer ikke en gammel browserkopi.

Hvis to CDN-/page-cachelag er aktive, dokumenteres purge-rækkefølgen. Fjerne cachelag skal ikke slås fra permanent uden at kontrollere sikkerhed og DNS.

5. Kontroller crawler og preloading

En crawler kan genopbygge cache hurtigt, men den bør hente den nye originversion. Hvis den rammer en gammel intern route, forkert server-IP eller et andet cachelag, kan gammel HTML blive lagt tilbage. Pause crawleren på staging, purge målrettet, og test markøren før den aktiveres igen.

6. Kontroller komponentcache

Shortcodes, ESI, pagebuilder-CSS, produktfiltre og eksterne API-widgets kan have egen cache. Se sidekilden: er markøren gammel i HTML, eller bliver den gamle komponent hentet bagefter via AJAX? Hvis kun komponenten er gammel, skal dens ejer purge eller have en passende kort TTL.

Gem en tydelig ejeroversigt for hver komponentcache: hvor data ændres, hvilket event der gør cachen ugyldig, og hvordan en enkelt post kan purges. Test med to forskellige poster, så en rettelse ikke kun virker for én hardcodet ID. En kort TTL kan begrænse varigheden af en fejl, men erstatter ikke et korrekt purge-event, når en pris, lagerstatus eller anden vigtig oplysning skal slå igennem straks.

Mikroeksempel: artiklen er ny, men arkivet er gammelt

En redaktør opdaterer titel og billede. Selve artiklen viser den nye version, mens kategoriarkivet stadig har det gamle kort. Det peger ikke på browsercache, hvis den nye artikel kan ses i samme session. Mere sandsynligt er artiklens cachetag purget uden det relaterede arkiv, eller builderens komponentcache har sin egen levetid.

Sæt en ufølsom markør både i artiklen og i den del, arkivkortet afspejler. Gem artikel- og arkivheaders før og efter en normal gemning. Hvis artiklen bliver miss → hit med ny markør, men arkivet forbliver hit med gammel hash, har du et præcist purge-event at give til plugin- eller temaejeren.

Mikroeksempel: indlogget er nyt, anonym er gammelt

Det mønster betyder ofte, at preview eller indlogget bruger går uden om page cache, mens anonyme gæster får en cachet kopi. Purge den konkrete URL og gentag anonymt. Hvis markøren stadig er gammel mod edge, men ny ved en sikker origin-kontrol, ligger kopien i CDN/proxylaget. Hvis begge er gamle, skal du tilbage til servercache eller selve renderingen.

Hvornår en databasekontrol er relevant

Cache er ikke altid ejeren. Hvis editoren viser den gamle værdi efter reload, eller en read-only forespørgsel mod den rigtige post stadig indeholder den, blev ændringen måske ikke gemt eller en synkronisering skrev den tilbage. Kontroller post-id, revision og builderens datakilde, før du purger igen. Ellers kan du bruge tid på at tømme lag, som korrekt gengiver en gammel databaseværdi.

Ved planlagte indholdsfeeds eller eksterne datakilder skal du også notere opdateringsrytmen. En cache kan være frisk og stadig vise en gammel pris, hvis importen aldrig skrev den nye værdi. Følg rækkefølgen fra kilde til database, rendering og cache; den første gamle værdi ejer sagen.

Verifikation

  • Gemning af testmarkøren udløser målrettet purge.
  • Første anonyme request efter gemning er miss med nyt indhold; næste er hit med samme.
  • Edge, origin og to private browsere viser samme nye version.
  • Relateret arkiv/frontpage opdateres, hvis det indeholder posten.
  • Crawler/preload lægger ikke den gamle version tilbage.
  • Debuglog viser forventet purge-tag/event og ingen loop.

Rollback

Fjern testmarkøren, gendan tidligere purge-/TTL-/CDN-regel, og purge de berørte tags. Hvis en integration blev tilføjet, gendan plugin/kode fra backup og bekræft den tidligere dokumenterede adfærd. Sæt ikke HTML-browsercache tilbage til en kendt skadelig lang TTL.

Hvornår skal hosting eller udvikler hjælpe?

Hosting skal have URL, markør, UTC-tid og headers fra edge/origin. Pluginudvikleren skal have eventet, der opdaterer data uden purge. Se LiteSpeed hosting hos Hostious ved flere cachelag eller originproblemer.

Ofte stillede spørgsmål om gammelt cache-indhold

Hvorfor ser besøgende gammelt indhold, når jeg selv ser det nye?

Fordi du er logget ind og bypasser cachen, mens anonyme får den gamle cachede version. Test altid i et privat vindue – det er de besøgendes virkelighed.

Hvilket lag holder på den gamle version?

Følg headerne: Age og X-QC-Cache/CDN-headers peger på edge-cache, X-LiteSpeed-Cache på serverens cache, og ingen af delene peger på browserens egen cache. Purge kun det lag, der matcher.

Er ‘Purge All’ en god løsning?

Som nødgreb, ja – men som vane, nej. Fuld purge tømmer alt og gør sitet langsomt, til cachen er varm igen. Purge den konkrete URL, og lær hvilken hændelse der burde have purget automatisk.

Læs også

Sådan dokumenterer du din egen stale-content-sag

Brug en ufølsom markør som CACHE-TEST-1420, og skriv for hvert lag, om markøren ses: editor/preview, origin, LiteSpeed, CDN og normal browser. Gem headers og tidspunkt sammen med resultatet. Markøren skal fjernes igen efter testen, så den ikke bliver en permanent del af indholdet.

Når laget er fundet, dokumenteres den smalleste purge og samme request før/efter. En global purge kan få siden til at se rigtig ud uden at afsløre det manglende event. Notér derfor også hvilken post, taxonomy eller komponent der burde have ugyldiggjort cachen, og kontrollér en relateret arkivside som negativ eller sekundær test.