Wat is caching? Een duidelijke gids voor appbouwers
Caching betekent het bewaren van een kant-en-klare kopie van iets dat traag of duur was om op te halen, zodat het volgende verzoek ernaar snel vanuit die kopie kan worden beantwoord. De opgeslagen kopie heet een cache. Je browser cachet afbeeldingen zodat een site bij je tweede bezoek sneller laadt; een server cachet het resultaat van een trage databasequery zodat hij die niet voor elke bezoeker opnieuw hoeft uit te voeren.
Caching maakt apps sneller en goedkoper om te draaien. De grote afweging is dat een kopie verouderd kan raken.
Waarom caching ertoe doet als je met AI bouwt
Je komt caching op drie manieren tegen in met AI gebouwde apps:
- ‘Ik heb de app bijgewerkt maar zie nog steeds de oude versie.’ Dit is het meest voorkomende caching-moment, en meestal is het onschuldig — je browser of een CDN toont een opgeslagen kopie.
- Snelheid. Als een pagina traag is omdat hij voor elke bezoeker dezelfde berekeningen opnieuw uitvoert, kan het cachen van het resultaat hem bijna direct laten aanvoelen.
- Kosten. Veel AI-bouwers en hosts rekenen voor rekenkracht, databasetijd en externe API-aanroepen. Als duizend bezoekers hetzelfde dure verzoek doen, laat caching je er maar één keer voor betalen.
De basis kennen stelt je in staat om om caching te vragen waar het helpt, en het te herkennen wanneer het de oorzaak is van iets wat er vreemd uitziet.
Een alledaagse vergelijking
Denk aan de keuken van een drukke koffiebar.
Elke ochtend zou de barista elke koffie op bestelling met vers gemalen bonen kunnen zetten. Dat is traag. In plaats daarvan houdt hij een pot filterkoffie klaar op het warmhoudplaatje. De meeste klanten krijgen binnen seconden een kopje — dat is een cache-hit. Wanneer de pot leeg is, zet iemand een nieuwe — een cache-miss.
Maar koffie die te lang staat wordt slap, dus de bar heeft een regel: gooi elke pot weg die ouder is dan 30 minuten. Die regel is de vervaltijd van de cache. Niemand zou dezelfde pot de hele dag bewaren, en niemand zou de bestelling van iemand met havermelk en drie suikers vooraf zetten — sommige dingen mogen helemaal niet worden gecachet.
Waar caches zich bevinden
Een paginaweergave kan langs meerdere caches gaan, van dichtbij de gebruiker naar ver weg:
| Cache | Waar het is | Wat het meestal bewaart | Voorbeeld |
|---|---|---|---|
| Browsercache | Op het apparaat van de bezoeker | Afbeeldingen, stylesheets, scripts, lettertypen | Je logo laadt direct op de tweede pagina |
| CDN-cache | Servers over de hele wereld, dicht bij bezoekers | Statische bestanden en soms hele pagina's | Een bezoeker in Tokio krijgt bestanden van een nabije server, niet van je oorsprong |
| Applicatiecache | Op of naast je server, vaak in het geheugen of in Redis | Resultaten van trage query's of externe API-aanroepen | De wisselkoersen van vandaag, één keer per uur opgehaald |
| Databasecache | Binnen de database | Recent gebruikte gegevens en queryplannen | Populaire rijen blijven in snel geheugen |
Een CDN (content delivery network) is in feite een wereldwijd netwerk van caches voor de bestanden van je site.
Hoe een cache bepaalt wat hij bewaart
Elke cache moet dezelfde vragen beantwoorden:
- Wat mag gecachet worden? Openbare, gedeelde gegevens (een productafbeelding, een blogpost) — ja. Privégegevens (de accountpagina van een gebruiker, zijn berichten) — nooit in een gedeelde cache.
- Hoe lang? Dit is de TTL (time to live). Een logo mag misschien een jaar gecachet worden; een voorraadniveau 30 seconden.
- Hoe wordt het bijgewerkt? Ofwel de kopie verloopt en wordt opnieuw opgehaald, ofwel de app verwijdert de kopie bewust wanneer de gegevens veranderen — dat heet invalidatie.
Voor websites vertelt de server aan browsers en CDN's hoe ze elk bestand moeten cachen via de Cache-Control-header. Bijvoorbeeld: Cache-Control: max-age=3600 betekent ‘je mag deze kopie een uur hergebruiken’.
Moderne buildtools regelen het moeilijkste deel voor statische bestanden met cache busting: elke keer dat een bestand verandert, krijgt het een nieuwe naam met een vingerafdruk, zoals app.3f9a2c.js. Browsers kunnen de oude naam lang cachen, omdat de nieuwe versie simpelweg een andere naam heeft.
Een uitgewerkt voorbeeld: een productcatalogus
Je hebt een kleine webwinkel. De startpagina toont 50 producten met prijzen en voorraadniveaus uit de database, plus een lijst ‘trending’ die een trage berekening over alle bestellingen vereist.
- Afbeeldingen en scripts worden lang gecachet door de browser en het CDN. Elke nieuwe build geeft gewijzigde bestanden nieuwe namen, dus updates blijven zichtbaar.
- De trendlijst wordt elke 10 minuten berekend en opgeslagen in een applicatiecache. Elke bezoeker in die 10 minuten krijgt het opgeslagen resultaat direct.
- Prijzen worden kort gecachet, en de cache wordt gewist zodra je een product bewerkt, zodat klanten nooit lang een oude prijs zien.
- Voorraad bij het afrekenen wordt nooit gecachet. Wanneer iemand op ‘Kopen’ klikt, controleert de app de echte database, zodat er niets wordt verkocht dat net uitverkocht is.
- De winkelwagen- en accountpagina's worden nooit in gedeelde caches bewaard, omdat ze persoonlijk zijn.
Het resultaat: de startpagina is snel, de database doet veel minder werk, en niets dat met geld of privacy te maken heeft, is ooit verouderd.
Belangrijke begrippen
| Begrip | Betekenis |
|---|---|
| Cache-hit / miss | De gegevens zijn in de cache gevonden / moesten bij de bron worden opgehaald. |
| TTL (time to live) | Hoe lang een gecachete kopie als vers wordt beschouwd. |
| Verouderde gegevens (stale data) | Een gecachete kopie die niet meer actueel is. |
| Invalidatie | Een gecachete kopie bewust verwijderen omdat het origineel is veranderd. |
| Cache busting | De naam of URL van een bestand wijzigen wanneer het verandert, zodat caches de nieuwe versie ophalen. |
| Cache-Control | De HTTP-header die browsers en CDN's vertelt hoe ze een antwoord moeten cachen. |
| Harde vernieuwing | Een pagina herladen terwijl de browser wordt gevraagd zijn cache te negeren. |
| Redis | Een populaire opslag in het geheugen, vaak gebruikt als applicatiecache. |
Veelvoorkomende misverstanden
- ‘Caching is altijd goed.’ Het verkeerde cachen veroorzaakt echte bugs: oude prijzen, ontbrekende nieuwe berichten, of — het ergste geval — de privépagina van de ene gebruiker die aan een andere wordt getoond. Cache bewust.
- ‘Als ik de oude versie zie, is mijn update mislukt.’ Meestal niet. Probeer een harde vernieuwing (Ctrl+Shift+R, of Cmd+Shift+R op een Mac) of een privévenster voordat je denkt dat er iets kapot is.
- ‘Caching repareert een trage app.’ Het verbergt traagheid voor herhaalde verzoeken. Het eerste verzoek blijft traag, en als het onderliggende probleem een ontbrekende databaseindex is, los dat ook op.
- ‘Ik moet alles zo lang mogelijk cachen.’ Lange cachetijden passen bij bestanden die nieuwe namen krijgen wanneer ze veranderen. Voor HTML-pagina's en gegevens zijn kortere tijden veiliger.
- ‘Mijn cache wissen lost het voor iedereen op.’ Het wist alleen jouw browser. Bezoekers en CDN-caches hebben nog steeds hun eigen kopieën.
Wat je aan je AI-appbouwer kunt vragen
- ‘Welke delen van deze app zijn traag, en welke kunnen veilig worden gecachet?’
- ‘Cache de [trendlijst / API-resultaat] voor [N] minuten en wis hem wanneer de onderliggende gegevens veranderen.’
- ‘Zorg dat geen enkele pagina met persoonlijke of accountgegevens door een CDN of gedeelde cache kan worden gecachet.’
- ‘Stel lange cachetijden in voor bestanden met vingerafdrukken en korte voor HTML.’
- ‘Cache antwoorden van [externe API] zodat we die niet bij elke paginalading aanroepen — en vertel me hoe verouderd die gegevens kunnen worden.’
- ‘Ik zie na het publiceren een oude versie. Is dat mijn browsercache, of is er iets niet uitgerold?’
Caching in Mythex
Nadat je een update naar een Mythex-app publiceert, melden de docs dat CDN-caches even kunnen achterlopen, en een harde vernieuwing van de publieke URL toont de nieuwe versie — zie Hoe publiceren. De pagina Hostinglimieten raadt ook aan statische assets te cachen, omdat hosting, databasetijd en bandbreedte worden betaald uit je creditsaldo. Alles daarbuiten — het cachen van query-resultaten of API-antwoorden — is iets wat je de agent laat inbouwen in je app.
Gerelateerde lectuur: wat een CDN is, hoe je je website sneller maakt en wat rate limiting is.
Veelgestelde vragen
Wat is caching in simpele termen?
Caching betekent het bewaren van een kopie van iets dat traag of duur was om op te halen, zodat het de volgende keer dat het nodig is snel vanuit die opgeslagen kopie kan worden geleverd. Browsers, CDN's, servers en databases gebruiken allemaal caches om apps sneller en goedkoper te laten draaien.
Waarom zie ik na een update nog steeds de oude versie van mijn website?
Waarschijnlijk serveert je browser of een CDN nog een opgeslagen kopie van de oude bestanden. Een harde vernieuwing (Ctrl+Shift+R op Windows, Cmd+Shift+R op een Mac) lost het meestal op. Voor bezoekers geven goed gebouwde sites bijgewerkte bestanden nieuwe namen, zodat caches automatisch de nieuwe versie ophalen.
Wat doet het wissen van de cache?
Het wissen van je browsercache verwijdert de opgeslagen kopieën van bestanden en pagina's die de browser bewaarde, zodat hij alles de volgende keer opnieuw downloadt. Het kan pagina's repareren die er kapot of verouderd uitzien, en daarna laden pagina's de eerste keer iets langzamer.
Kan caching problemen veroorzaken?
Ja. Het grootste risico is het serveren van verouderde gegevens — een oude prijs, een verouderd voorraadniveau — of, erger, het cachen van de privépagina van één gebruiker en die aan iemand anders tonen. Goede cacheregels bepalen wat er gecachet mag worden, hoe lang, en slaan persoonlijke gegevens nooit op in gedeelde caches.