đžđȘ NĂ€r cache blir fienden â varför moderna webblĂ€sare inte behöver gamla cache-plugin till hemsidan lĂ€ngre
Av Christine Djerf, AkademĂa Nyhetseko.se
Under mĂ„nga Ă„r har âcacheâ betraktats som lösningen pĂ„ alla prestandaproblem.
Tunga sidor skulle snabba upp, servrar avlastas och anvÀndarupplevelsen bli mjukare.
Men de senaste Ären har spelplanen förÀndrats i grunden.
Det som tidigare var en nödvĂ€ndig mellanlagring har i dag blivit ett problem i sig â sĂ€rskilt för moderna nyhets- och innehĂ„llssajter som uppdateras kontinuerligt.
Jag upptÀckte det hÀr i praktiken nÀr Nyhetseko.se började uppföra sig mÀrkligt:
nya artiklar publicerades, men de syntes inte pÄ förstasidan.
I webblĂ€sarens anonyma lĂ€ge fanns de dĂ€r direkt â men inte i vanlig vy.
Efter flera felsökningar visade det sig att ett gammalt cache-skript lÄg kvar i en av mina egna plugin-mappar pÄ servern, trots att sjÀlva tillÀgget för lÀnge sedan tagits bort.
NÀr jag tog bort filen dök den senaste artikeln upp omedelbart.
Problemet var inte WordPress. Det var cache-logiken sjÀlv.
Dubbel cache â dubbla lĂ„sningar
Det moderna webblandskapet har tvÄ separata men överlappande cache-nivÄer:
- Server- och CMS-nivĂ„n â dĂ€r WordPress eller plugin som WP Super Cache, LiteSpeed eller W3 Total Cache lagrar fĂ€rdig HTML.
- WebblĂ€sarens egen cache â dĂ€r Chrome, Edge, Firefox och Safari sparar inte bara filer utan hela dokumentstrukturer, service-workers, bilder och skript.
NĂ€r bĂ„da dessa nivĂ„er försöker âhjĂ€lpa tillâ uppstĂ„r en cache-deadlock:
Servern tror att webblÀsaren ska uppdatera, och webblÀsaren tror att servern redan har gjort det.
Resultatet blir att ingenting uppdateras.
För en statisk företagssida mÀrks det kanske inte.
Men för en redaktionell webbplats â dĂ€r fĂ€rska nyheter Ă€r kĂ€rnan â blir det katastrofalt.
LÀsaren fÄr gamla versioner, statistik blir missvisande och redaktören tror att publiceringen misslyckats.
WebblÀsarna har redan gÄtt förbi
Fram till omkring 2015 var plugin-baserad cache logisk.
WebblÀsarna hÀmtade varje fil separat och hade ingen större förstÄelse för hur resurser hÀngde ihop.
Sedan kom HTTP/2, lokal lagring (localStorage), stale-while-revalidate, prefetching och service-workers.
Det betyder att sjĂ€lva webblĂ€saren i dag Ă€r en fullvĂ€rdig cache-motor â ofta betydligt effektivare Ă€n ett plugin.
NÀr ett cache-plugin dessutom försöker lÀgga sig ovanpÄ detta, uppstÄr konflikter:
gamla kopior sparas i onödan, sidversioner blandas, och datorns minne fylls med överlappande kopior.
Det som skulle spara resurser gör i stÀllet att CPU och RAM-anvÀndning skenar.
Ett mönster av överoptimering
De flesta cache-plugin Àr utvecklade under en tid dÄ webben var lÄngsam.
De antar fortfarande att webblĂ€saren Ă€r âdumâ.
Men dagens Chrome och Edge har redan mekanismer för:
- automatisk cache-validering,
- prioritering av innehÄll,
- bakgrundsladdning av bilder,
- och till och med förutsÀgelse av anvÀndarens nÀsta klick.
NĂ€r vi dĂ„ lĂ€gger till ytterligare ett lager via PHP- eller JavaScript-baserade cache-lösningar, skapas vad jag kallar ett cache-stack-kollaps â ett system som försöker optimera sig sjĂ€lvt till stillestĂ„nd.
Effekten pÄ moderna nyhetssajter
För en webbplats som Nyhetseko.se, dÀr nytt material publiceras flera gÄnger i veckan, Àr överdriven caching direkt skadlig:
- Nya artiklar syns inte förrÀn besökaren tömt sin egen cache.
- RSS-flöden visar gammal data.
- Statistiksystem tror att inga besök sker (eftersom sidor laddas lokalt).
- WebblÀsaren börjar tugga tungt av alla sparade versioner.
Jag har sett samma mönster i flera âoptimeringspluginâ â Ă€ven kommersiella.
De lovar snabbare laddning men levererar i praktiken fastfrusna sajter och överbelastade webblÀsare.
Rekommendation: minimera cache, maximera logik
För dagens webben rÀcker det med en enda effektiv cache-nivÄ, och det Àr den som redan finns i webblÀsaren.
| NivÄ | BehÄll | AvlÀgsna |
|---|---|---|
| Server | Kortlivad HTTP-cache (t.ex. via .htaccess) | Tunga PHP-cachar och âpreloadersâ |
| WebblÀsare | Statisk filcache (bilder, CSS, JS) | HTML-cache, service-workers utan behov |
| WordPress | Transienter för specifika databasfrĂ„gor | Generella âpage cacheâ-tillĂ€gg |
Det viktigaste Àr att inte lÄta HTML-sidor cache-lagras lÀngre Àn nÄgra sekunder.
De bör levereras med:
Cache-Control: no-store, no-cache, must-revalidate
Resten â bilder, skript och stilmallar â kan lugnt ligga kvar i 30 dagar.
PÄ sÄ sÀtt fÄr man snabba laddtider utan att lÄsa innehÄllet.
Cachning Ă€r inte lĂ€ngre en universallösning â den har blivit en rest frĂ„n en tidigare teknisk epok.
I dag orsakar den ofta mer problem Àn den löser.
Med moderna webblĂ€sare, snabbare servrar och distribuerade skyddsnĂ€t som Project Shield, Ă€r behovet av extra cache-plugin inte bara överflödigt â det Ă€r rent av riskabelt.
För mig personligen blev lÀrdomen tydlig:
NĂ€r allt blir statiskt fel, Ă€r det inte datorn som hĂ€nger sig â det Ă€r logiken.
Och ibland Àr den mest avancerade optimeringen att ta bort det som inte lÀngre behövs!
