Stel je voor: je WordPress-site draait page caching, je afbeeldingen zijn geoptimaliseerd en je hosting is op orde. Toch blijft de admin traag en merken ingelogde gebruikers vertraging. De kans is groot dat je database het knelpunt is. Object caching met Redis lost precies dat probleem op - en het is eenvoudiger in te richten dan je denkt.
In eerdere artikelen bespraken we wat er tijdens een WordPress request gebeurt en hoe je WordPress performance bottlenecks herkent en meet. Daarin zagen we dat WordPress bij elke paginaweergave tientallen tot honderden database-queries uitvoert. Object caching pakt dat probleem bij de kern aan.
Wat is object caching?
WordPress heeft een ingebouwd object-cache-systeem. Bij elke paginaweergave slaat WordPress bepaalde database-resultaten tijdelijk op in een PHP-array. Vraagt een plugin of het thema dezelfde data nogmaals op tijdens hetzelfde request? Dan komt die uit de cache in plaats van opnieuw uit de database.
Het probleem: deze standaardcache leeft alleen tijdens één enkel request. Zodra de pagina is opgebouwd en verstuurd, verdwijnt alles uit het geheugen. Bij het volgende bezoek begint WordPress opnieuw met dezelfde queries.
Hier komt persistent object caching in beeld. Met een externe cachelaag - zoals Redis - blijven de opgeslagen objecten bewaard tussen requests. Het resultaat: drastisch minder database-queries en een merkbaar snellere site.
Waarom Redis?
Er bestaan meerdere oplossingen voor persistent object caching. De twee bekendste zijn Redis en Memcached. Beide slaan data op in het werkgeheugen (RAM), waardoor ze razendsnel zijn. Redis heeft zich in de WordPress-wereld echter als de standaard gevestigd, en daar zijn goede redenen voor.
Voordelen van Redis boven alternatieven
- Datastructuren - Redis ondersteunt niet alleen simpele key-value-paren, maar ook lijsten, sets en hashes. Dat sluit goed aan op de complexe datastructuren die WordPress gebruikt.
- Persistentie - Redis kan data naar schijf schrijven, zodat de cache een herstart overleeft. Memcached verliest alles bij een herstart.
- Atomic operaties - Redis ondersteunt transacties, wat betrouwbaardere cache-operaties oplevert.
- Brede ondersteuning - vrijwel elke managed WordPress-host biedt Redis aan. Denk aan Cloudways, Kinsta, WP Engine en SpinupWP.
Voor de meeste WordPress-sites is Redis de logische keuze. Memcached is niet fout, maar Redis biedt simpelweg meer met dezelfde snelheid.
Hoe werkt Redis als object cache in WordPress?
Om te begrijpen wat Redis doet, is het handig om het proces te visualiseren. Zonder Redis verloopt een request zo:
- Bezoeker vraagt een pagina op
- WordPress start op en voert database-queries uit
- Resultaten worden verwerkt en de HTML wordt opgebouwd
- De response gaat naar de browser
- Alle query-resultaten verdwijnen uit het geheugen
Met Redis erbij verandert stap 2:
- Bezoeker vraagt een pagina op
- WordPress controleert of de gevraagde data al in Redis staat
- Cache hit: data komt direct uit Redis (microseconden) - de database wordt overgeslagen
- Cache miss: WordPress bevraagt de database en slaat het resultaat op in Redis voor volgende requests
- De HTML wordt opgebouwd en verstuurd
Bij een warme cache - wanneer Redis de meeste data al heeft opgeslagen - daalt het aantal database-queries vaak met 50 tot 90 procent. Dat is precies het verschil dat je voelt als je door de admin navigeert of als een ingelogde gebruiker een dynamische pagina laadt.
Het drop-in systeem
WordPress zoekt tijdens het opstartproces naar een bestand genaamd object-cache.php in de wp-content-map. Dit is een zogenaamd drop-in: een speciaal bestand dat de standaard WP Object Cache volledig vervangt. Zoals we bespraken in het artikel over het WordPress request-proces, laadt wp-settings.php dit drop-in tijdens de bootstrap-fase.
Als dit bestand geconfigureerd is voor Redis, verlopen alle cache-operaties - wp_cache_get(), wp_cache_set(), wp_cache_delete() - via Redis in plaats van een tijdelijke PHP-array.
Wanneer maakt Redis het verschil?
Niet elke WordPress-site heeft Redis nodig. Voor een statische blog met weinig verkeer volstaat een goede page-cache-plugin. Redis wordt waardevol in deze scenario's:
WooCommerce en webshops
WooCommerce is notoir zwaar op database-queries. Productpagina's, winkelmandjes, voorraadbeheer en prijsberekeningen genereren tientallen extra queries per request. Veel van die pagina's zijn dynamisch en niet geschikt voor page caching. Redis vangt hier een groot deel van de databaselast op.
Ingelogde gebruikers en membership-sites
Page caching werkt het best voor anonieme bezoekers die allemaal dezelfde HTML krijgen. Zodra gebruikers inloggen - op een community-site, online cursusplatform of klantportaal - is page caching vaak niet mogelijk. De database draait dan op volle toeren, en Redis maakt het verschil tussen een responsieve en een trage ervaring.
Hoge TTFB ondanks page caching
Heb je page caching ingeschakeld maar blijft je TTFB hoog op niet-gecachte pagina's? Dat wijst op trage database-queries. Redis vermindert de database-belasting waardoor ook cache-misses sneller worden afgehandeld.
WordPress admin en backend
Het WordPress-dashboard wordt niet door page caching bediend, maar is wel query-intensief. Redactionele teams die dagelijks in de backend werken, merken het verschil: sneller laden van postlijsten, snellere media-bibliotheek en vlottere plugin-pagina's.
Multisite-installaties
Bij WordPress Multisite deelt elke subsite dezelfde database. Naarmate het aantal sites groeit, stijgt de database-belasting. Redis houdt de boel beheersbaar door veelgevraagde data in het geheugen te houden.
Redis instellen: stap voor stap
De configuratie verschilt per hostingomgeving, maar het principe is overal hetzelfde: Redis activeren, WordPress eraan koppelen en de verbinding verifiëren.
Stap 1: Redis activeren op je server
Bij managed hosting (Cloudways, Kinsta, SpinupWP) schakel je Redis in via het hostingpanel - meestal een toggle of add-on.
Bij een eigen VPS of dedicated server installeer je Redis via de pakketbeheerder:
# Ubuntu/Debian
sudo apt update && sudo apt install redis-server
# CentOS/RHEL
sudo yum install redis
Start Redis en stel automatisch opstarten in:
sudo systemctl start redis-server
sudo systemctl enable redis-server
Controleer of Redis draait:
redis-cli ping
# Verwacht antwoord: PONG
Zorg ook dat de PHP Redis-extensie geïnstalleerd is. Managed hosts hebben deze standaard, bij eigen beheer:
sudo apt install php-redis
sudo systemctl restart php-fpm
Stap 2: WordPress configureren
Voeg de volgende regels toe aan je wp-config.php, boven de regel /* That's all, stop editing! */:
define('WP_REDIS_HOST', '127.0.0.1');
define('WP_REDIS_PORT', 6379);
define('WP_REDIS_DATABASE', 0);
define('WP_CACHE', true);
Bij managed hosting kan het host-adres afwijken. Raadpleeg de documentatie van je host voor de juiste waarden.
Stap 3: Redis Object Cache plugin activeren
De meest gebruikte plugin is Redis Object Cache van Till Krüss. Installeer en activeer de plugin via het WordPress-dashboard. Navigeer naar Instellingen → Redis en klik op Enable Object Cache.
De plugin plaatst automatisch het object-cache.php drop-in in je wp-content/-map. Dit vervangt de standaard WordPress object cache door een Redis-implementatie.
Stap 4: Verifieer de werking
Na activering toont de Redis-plugin een statuspagina met:
- Status: Connected of Not Connected
- Hit ratio: het percentage cache hits versus misses
- Geheugengebruik: hoeveel RAM Redis in beslag neemt
- Aantal keys: hoeveel objecten er gecachet zijn
Een gezonde installatie toont een hit ratio van 85% of hoger na enkele minuten normaal gebruik. Gebruik ook Query Monitor om te bevestigen dat het aantal database-queries daadwerkelijk is gedaald - precies de tool die we in het artikel over performance bottlenecks bespraken.
Redis fijntunen
De standaardinstellingen werken voor de meeste sites. Wil je het maximale eruit halen? Focus op deze drie instellingen.
Geheugenbeperking
Voorkom dat Redis al het beschikbare RAM opslokt door een limiet in te stellen in /etc/redis/redis.conf:
maxmemory 128mb
maxmemory-policy allkeys-lru
Het allkeys-lru-beleid verwijdert automatisch de minst recent gebruikte items als het geheugen vol raakt. Voor de meeste WordPress-sites is 64 tot 256 MB ruim voldoende.
Key prefix bij meerdere sites
Draai je meerdere WordPress-installaties op dezelfde Redis-server? Stel per site een unieke prefix in om conflicten te voorkomen:
define('WP_REDIS_PREFIX', 'site1_');
Unix socket voor lokale verbindingen
Draait Redis op dezelfde server als WordPress? Gebruik dan een Unix socket in plaats van TCP voor minder overhead:
define('WP_REDIS_SCHEME', 'unix');
define('WP_REDIS_PATH', '/var/run/redis/redis-server.sock');
Dit scheelt de overhead van het TCP-protocol - bij duizenden requests per minuut telt dat op.
Veelgemaakte fouten met Redis
Redis als vervanging voor page caching
Dit is de grootste misvatting. Redis en page caching zijn complementair, geen alternatieven. Page caching slaat de volledige HTML op en slaat de hele WordPress-bootstrap over. Redis versnelt de database-laag voor requests die wél door WordPress verwerkt worden. Gebruik altijd beide.
Geen geheugenslimiet instellen
Zonder maxmemory groeit Redis onbeperkt. Op een server met beperkt RAM kan dit leiden tot swapping of crashes. Stel altijd een limiet in.
Cache niet flushen na updates
Na een grote plugin-update, themawijziging of database-migratie kan verouderde data in Redis voor onverwacht gedrag zorgen. Flush de cache via de pluginpagina of met redis-cli FLUSHDB.
Installeren en vergeten
Redis draait stil op de achtergrond. Zonder monitoring merk je niet wanneer het geheugen vol raakt of de hit ratio daalt. Controleer minstens maandelijks de statistieken in de Redis-pluginpagina.
Het effect meten
Na het inschakelen van Redis wil je het effect onderbouwen. Meet de TTFB van je belangrijkste pagina's voor en na activatie met WebPageTest. Let specifiek op pagina's die niet page-gecachet worden.
Vergelijk ook het aantal database-queries per pagina via Query Monitor. Met Redis actief zou je een duidelijke daling moeten zien. Queries die eerder elke keer de database raakten, worden nu vanuit Redis geserveerd.
De officiële Redis-documentatie biedt uitgebreide achtergrondinformatie over configuratie, tuning en monitoring voor wie dieper wil graven.
Redis als onderdeel van je performance-strategie
Object caching staat niet op zichzelf. Het is één laag in een breder performance-arsenaal:
- Page caching - voor anonieme bezoekers blijft dit de grootste winst
- OPcache - slaat gecompileerde PHP-code op
- CDN - distribueert statische bestanden via servers dichtbij de bezoeker
- Database-optimalisatie - ruim verouderde transients, revisies en spam-comments op
De combinatie van deze lagen zorgt ervoor dat je WordPress-site snel is voor alle gebruikers. Snelheid is bovendien een rankingfactor voor Google: een lagere TTFB betekent dat Googlebot je pagina's sneller crawlt en je bezoekers een betere ervaring hebben. Dat vertaalt zich naar lagere bouncepercentages, langere sessieduur en uiteindelijk betere posities.
Benieuwd hoe al die lagen samenwerken tijdens een enkel request? In ons artikel over het WordPress request-proces zie je precies waar elke cachelaag ingrijpt - van de eerste byte tot de uiteindelijke HTML.
Veelgestelde vragen
Wat is object caching in WordPress?
Object caching slaat het resultaat van database-queries tijdelijk op in het geheugen. WordPress hoeft dezelfde data dan niet opnieuw uit de database op te halen, wat de laadtijd aanzienlijk verkort.
Wat is het verschil tussen object caching en page caching?
Page caching slaat de volledige HTML-uitvoer van een pagina op. Object caching werkt op een dieper niveau en bewaart individuele database-resultaten in het geheugen. Page caching is effectiever voor anonieme bezoekers, object caching helpt vooral bij dynamische of ingelogde pagina's.
Heb ik Redis nodig voor mijn WordPress-site?
Niet elke site heeft Redis nodig. Voor eenvoudige blogs volstaat page caching vaak. Redis wordt waardevol bij sites met veel dynamische content, WooCommerce-shops, membership-sites of als je een hoge TTFB hebt ondanks page caching.
Is Redis gratis te gebruiken?
Redis zelf is open-source en gratis. Veel managed WordPress-hosts bieden Redis als onderdeel van hun pakket aan. Bij eigen serverbeheer moet je Redis installeren en configureren, wat enige technische kennis vereist.
Kan Redis conflicteren met andere caching-plugins?
Dat kan, maar het is vermijdbaar. Redis vervangt de standaard object cache van WordPress en werkt naast page caching. Gebruik niet meerdere object-cache-oplossingen tegelijk. Eén Redis-plugin in combinatie met een page-cache-plugin is de ideale opzet.