Cache: waarom je website soms oude informatie laat zien

Je past een prijs aan op je website. Je ververst de pagina en er staat nog steeds het oude bedrag. Je twijfelt of je wel hebt opgeslagen. Je doet het nog een keer, en weer niets. Dit is de meest gemelde storing die geen storing is.

De oorzaak heet cache. Bijna elke site heeft het aan staan, vaak zonder dat de eigenaar het weet.

Bij Jachthaven Nauerna speelde dit groter. Voor hun sloepverhuur bouwde ik een boekingssysteem met iDeal. Op zonnige zaterdagen liep het bezoek hard op. De site werd traag en beschikbaarheid liep achter.

Ik heb de opbouw in twee lagen gesplitst. De gewone pagina’s gaan volledig door de cache. De beschikbaarheid en de afrekenstap sla ik nooit op. Zo bleef de site snel op piekmomenten, terwijl niemand een al geboekte sloep te zien kreeg.

Cache uitgelegd in het webdesign woordenboek van Project Direct
Cache bewaart wat je site al eerder heeft opgebouwd.

Wat is cache precies?

Cache is tijdelijke opslag van iets dat al eens is gemaakt. Je server bouwt een pagina op uit code, teksten en instellingen. Dat kost rekenkracht. Met cache bewaart hij het resultaat. De volgende bezoeker krijgt die bewaarde versie direct.

Vergelijk het met soep voorkoken. De eerste portie kost een uur. De tweede schep je uit de pan.

Wat het oplevert

Het scheelt vooral tijd. Cache is de goedkoopste manier van laadtijd verkorten die er bestaat. Je server doet minder werk, dus hij houdt drukte beter aan. Meer daarover lees je bij pagespeed.

De lagen waar cache in zit

Bij de bezoeker

De browsercache bewaart afbeeldingen, stijlen en scripts op de computer van je bezoeker. Bij een tweede bezoek hoeft hij die niet opnieuw te downloaden. Dat merk je vooral op mobiel internet. Meer over dat programma lees je bij browser.

Op je server

De servercache bewaart hele pagina’s als kant-en-klaar bestand. Dit is de laag met de meeste winst. Een goed hostingpakket heeft hier vaak al iets voor ingebouwd.

In het netwerk

Een CDN zet kopieen van je statische bestanden op servers wereldwijd. Je bezoeker haalt ze op bij de dichtstbijzijnde server.

Waarom je wijzigingen soms niet verschijnen

Nu wordt het logisch. Jij past de prijs aan in de database. Maar de bezoeker krijgt nog de bewaarde versie van gisteren. De cache weet niet dat er iets veranderd is.

Goede cachesoftware ruimt zichzelf op bij een wijziging. Niet alle software doet dat betrouwbaar. Zeker niet als er meerdere lagen boven elkaar liggen.

Zo los je het in de juiste volgorde op

  1. Ververs de pagina met ctrl en F5, of cmd en shift en R.
  2. Werkt dat niet, gebruik dan cache legen in je beheeromgeving.
  3. Zit er een dienst voor je site, leeg die dan ook.
  4. Nog steeds oud? Test in een privevenster van je browser.

Zie je het in een privevenster wel goed, dan zit het bij jou. Zie je het daar ook fout, dan zit het op de server.

Waar je nooit moet cachen

Sommige pagina’s moeten altijd vers zijn. Anders krijgt de ene bezoeker de gegevens van de ander.

  • De winkelwagen en de afrekenpagina van een webwinkel.
  • Pagina’s achter een login of een klantaccount.
  • Beschikbaarheid in een boekings- of reserveringssysteem.
  • Formulierstappen waarin al gegevens zijn ingevuld.

In WordPress sluit je die pagina’s expliciet uit. Doe je dat niet, dan krijg je meldingen over verdwenen winkelwagens. Ik controleer die uitsluitingen standaard bij onderhoud.

Cache en je hosting

Niet elke omgeving heeft dezelfde mogelijkheden. Op eenvoudige pakketten regel je alles met software in je site. Op betere webhosting zit caching al in de server zelf. Dat is sneller en het botst minder vaak.

Stapel niet drie oplossingen op elkaar. Dat is de meest voorkomende oorzaak van rare fouten. Kies er een en stel die goed in.

Wat ik standaard instel

Ik zet paginacaching aan voor alles wat voor iedereen gelijk is. Winkelwagen, kassa en accountpagina’s sluit ik uit. Afbeeldingen en stijlen krijgen een lange bewaartijd. En bij elke publicatie wordt de betreffende pagina automatisch opgeruimd.

Daarna test ik het als bezoeker, niet als beheerder. Ingelogd zie je namelijk vaak de verse versie.

Meer vragen over Cache

Dit zijn de vragen die ik hierover het vaakst krijg. Ik werk ze los uit.

  • Wat is cache en hoe werkt het?
  • Waarom zie ik mijn wijzigingen niet terug?
  • Hoe leeg je de cache van je website?
  • Welke cacheplugin kun je het beste gebruiken?
  • Is cache slecht voor een webshop?
  • Wat is het verschil tussen browsercache en servercache?
Dit is de vraag die ik het vaakst krijg. Je past iets aan, slaat het op en er verandert niets. Je twijfelt aan jezelf en doet het nog een keer. In negen van de tien gevallen is het cache. Jouw wijziging staat netjes in de database. Alleen krijgt de bezoeker nog de bewaarde versie van daarvoor. Er speelt vaak nog iets mee. Als beheerder ben je ingelogd, en ingelogde gebruikers krijgen meestal de verse versie. Jij ziet de wijziging dus wel, en je klant niet. Of precies andersom. Test daarom altijd in een privevenster van je browser. Daar ben je niet ingelogd en zie je wat een echte bezoeker ziet. Zie je het daar goed, dan is er niets aan de hand. Gebeurt dit structureel, dan is de opruiming niet goed ingesteld. Dat is te repareren. Vraag het bij twijfel even aan iemand anders op een ander apparaat. Ziet die persoon het wel goed, dan zit het probleem tussen jouw browser en jouw scherm.
Cache is tijdelijke opslag van iets dat al eerder is gemaakt. Je server bouwt een pagina op uit code, teksten en instellingen. Dat kost rekentijd bij elk bezoek opnieuw. Met cache bewaart hij het eindresultaat als kant-en-klaar bestand. De volgende bezoeker krijgt die bewaarde versie direct te zien. Er hoeft dan niets meer berekend te worden. Dat scheelt op een gewone site al snel een halve seconde. Er zijn meerdere lagen die tegelijk werken. De browser van je bezoeker bewaart afbeeldingen en stijlen. Je server bewaart complete pagina’s. En een netwerk van servers kan je bestanden dichter bij de bezoeker zetten. Je merkt cache pas als hij in de weg zit. Een gewijzigde prijs die niet verschijnt, bijvoorbeeld. Dat is geen storing, maar een bewaarde versie die nog niet is opgeruimd. Lees ook mijn uitleg over pagespeed. Zie cache dus niet als iets ingewikkelds. Het is gewoon werk dat je maar een keer doet in plaats van duizend keer. De kunst zit in weten wat je wel en niet bewaart.
Werk van buiten naar binnen, anders zoek je jezelf suf. Ik houd deze volgorde aan. Begin bij jezelf. Ververs de pagina met ctrl en F5 op Windows, of cmd en shift en R op een Mac. Daarmee dwing je je eigen browser om alles opnieuw op te halen. Werkt dat niet, ga dan naar je beheeromgeving. Daar zit meestal een knop om de opgeslagen pagina’s te wissen. Die zit in je cachesoftware of in het menu bovenin. Zit er een extern netwerk voor je site, leeg dan ook die laag. Dat vergeten mensen bijna altijd. Meer daarover lees je bij CDN. Gebruik het legen niet als vaste gewoonte. Als je het elke dag moet doen, klopt de instelling niet. Dan ruim je een symptoom op in plaats van de oorzaak. Leeg na een grote wijziging altijd alle lagen achter elkaar. Doe je er een half, dan zoek je een uur naar een fout die er niet is.
Die vraag is minder belangrijk dan mensen denken. De instelling doet meer dan de keuze. Belangrijker is waar je hosting staat. Zit caching al in de server ingebouwd, gebruik die dan. Dat is sneller en het botst minder vaak met je thema. Goede webhosting heeft dit meestal al geregeld. Heb je dat niet, dan kies je software in je site zelf. Er zijn gratis en betaalde varianten. Voor een gewone bedrijfssite volstaat een gratis oplossing prima. De grootste fout is stapelen. Drie oplossingen boven elkaar geeft rare fouten die niemand kan verklaren. Kies er een en stel die zorgvuldig in. Let ook op wat de software nog meer doet. Veel pakketten willen ook je code samenvoegen en verkleinen. Dat gaat regelmatig mis. Zet die opties apart aan en test na elke stap. Meet ook wat het oplevert. Zet je laadtijd voor en na de instelling naast elkaar. Zonder meting weet je niet of die extra software zijn plek verdient.
Niet als je hem goed instelt. Wel als je alles klakkeloos aanzet. Het risico zit in pagina’s die per bezoeker verschillen. De winkelwagen, de afrekenstap en het klantaccount. Bewaar je die, dan kan iemand de gegevens van een ander te zien krijgen. Dat is niet alleen vervelend, maar ook een privacyprobleem. Daarom sluit ik die pagina’s altijd expliciet uit. In een webwinkel geldt dat ook voor de bedankpagina en voor alles achter een login. Je productpagina’s mogen wel gewoon in de cache. Die zijn voor iedereen gelijk. Alleen de voorraadstand en de prijs moeten actueel blijven. Controleer het na elke grote update. Een nieuwe versie van je webshopsoftware kan de uitsluitingen omgooien. Ik neem die controle standaard mee in periodiek onderhoud. Test na elke wijziging zelf een bestelling. Leg iets in je winkelwagen, ga naar de kassa en kijk of alles klopt. Dat kost twee minuten en voorkomt veel gedoe.
Zie jij je wijzigingen niet terug, of wordt je site traag op drukke momenten? Stuur me de link via het formulier hieronder. Ik kijk welke cachelagen er op je site draaien en of ze elkaar in de weg zitten. Je krijgt een kort antwoord met wat er anders moet. Vermeld je plaats, dan weet ik meteen waar je zit.

Waar kan ik je mee helpen?