Caching is het tijdelijk opslaan van berekeningen zodat deze op het moment dat de informatie opnieuw opgevraagd wordt niet opnieuw gedaan hoeven worden. De resultaten hiervan zijn dan op de schijf of in het werkgeheugen opgeslagen en kunnen zodra een bezoeker hier om vraagt een stuk sneller worden ingeladen. Caching maakt de site niet alleen een stuk sneller, het scheelt ook load op de server, met name voor druk bezochte sites is dit erg gunstig.

Hoe werkt caching?

Caching is dus eigenlijk het opslaan van (veelbezochte) webpagina’s op de schijf en/of werkgeheugen (dit laatste raden we eigenlijk altijd aan). Gegevens cache je net zolang als ze relevant zijn. Om te zien of dit ook het geval is moet de berekening waarvan de uitkomst gecached moet worden echter opnieuw uitgevoerd worden. Daarom is het instellen van een “expiry time” een uitkomst.
De “expiry time” is de leeftijd van de gegevens in de cache. Je geeft aan dat informatie X na zoveel dagen in de cache te hebben gestaan op nieuw berekend moet worden. Er zijn ook caches waarbij wordt gewerkt met een ‘last-modified’ waarde. Deze gegevens worden wel alsnog gecontroleerd voordat de gegevens uit de cache worden ingeladen.
Heb je een wijziging doorgevoerd op je site? Dan wil je natuurlijk dat deze gelijk wordt gecached in plaats van te wachten op de expiry date. Gelukkig is het altijd mogelijk om handmatig de gehele cache of een gedeelte ervan te legen.

Cache flushen

Vooral Magento klanten maken vaak gebruik van meerdere caches. Onder het tabblad instellingen vinden Magento klanten daarom een button Magento Caches Leegmaken. Op deze pagina kun je alle caches flushen die je actief hebt staan.

Wat is cache warming?

Op het moment dat de cache van een site die sterk afhankelijk is van caching (bijvoorbeeld in verband met een grote hoeveelheid bezoekers) geleegd wordt, zorgt dit voor een enorme performance-dip! De server moet dan namelijk alle gegevens die opgevraagd worden opnieuw berekenen. Het kan dus zo zijn dat het laden van bepaalde pagina’s (totdat deze weer gecached zijn) een stuk trager verloopt of in extreme gevallen de server onderuit getrokken wordt. Dit kan ook gebeuren op het moment dat een site met weinig caching een bezoekers-piek te verwerken krijgt. Je kan dit voorkomen door tijdig de cache te vullen en dat heet cache warming.
Er zijn verschillende technieken om je cache ‘op te warmen’. Waar het eigenlijk op neer komt is dat de cache voor een drukke site op het minst drukke moment (gedeeltelijk) geleegd wordt en de pagina’s met de te cachen gegevens alvast aangeroepen worden. Zo hoeven deze pagina’s niet tijdens een piekmoment worden berekent. In het artikel Cache vullen via Shell staat beschreven hoe je de cache van een Magento website kan vullen vanaf de shell.

Verschillende vormen van caching

Er zijn een heleboel verschillende vormen van caching met elk hun eigen voordelen en nadelen;

File Cache

File cache is de meest simpele vorm van caching, maar als de uitkomst van een stevige berekening in een bestandje in de webruimte opslaan kan schelen dat deze de hele dag door voor elke bezoeker opnieuw gedaan moet worden, is het alsnog goud waard. De traagste vorm van caching, waardevol onder omstandigheden (simpel in te stellen en werkt zo goed als altijd) maar erg langzaam en daardoor niet aan te raden.

OPCode caching

OPcode caching bespaart geheugen en CPU op de webserver. De processor van een server kan PHP niet lezen.Php code wordt op het moment dat deze wordt opgevraagd daarom omgezet naar machinecode, operationcode genoemd.
Applicaties worden in machinecode geïnstalleerd, omdat ze als compleet product opgeleverd worden. Php moet in productie nog door normale mensen gelezen en aangepast kunnen worden, daarom wordt PHP code pas berekend op het moment dat deze wordt opgevraagd. OPcode caching zorgt ervoor dat deze stap maar één keer wordt uitgevoerd. De berekeningen in de PHP code blijven het zelfde het is alleen de vertaalslag naar machinecode die gecached wordt.

Reverse Proxy

Bespaart het aantal open verbindingen/Laadtijd/rekentijd op statische content. Voorbeelden hiervan zijn CDN en Varnish. Een reverse proxy server is een server of service die tussen de eigenlijke server en de voordeur van de site staat. Deze server is voorzien van slimme mechanismen die bepalen op een verzoek al dan niet door mag naar de server waar de website op staat. Hiermee worden dus berekeningen bespaard en kan de load gedeeld worden, omdat de informatie op meerdere proxy servers beschikbaar gesteld wordt.

Redis

Redis is een caching tool waarmee je cache data van je website kan wegschrijven naar een externe locatie. Redis is snel omdat niets van wat er gecached wordt op disk hoeft te worden opgeslagen, maar alles in geheugen gebeurt. Meer informatie over Redis vind je in het artikel Redis – Geoptimaliseerde in-memory caching.

10