WordPress heeft al een objectcache: tijdens het laden van een pagina houdt het de opties, berichten en metadata die uit de database zijn gelezen in het geheugen, zodat het ze niet opnieuw hoeft op te vragen. Maar de documentatie van WordPress zegt het duidelijk: standaard is deze cache niet persistent. Alles verdwijnt aan het einde van het verzoek, en de volgende pagina doet dezelfde leesacties in MySQL of MariaDB opnieuw. Redis en Memcached maken deze cache persistent.
Hoe een persistente objectcache werkt
De truc zit in één bestand: object-cache.php, in wp-content. Het is een zogeheten drop-in die WordPress bij het opstarten automatisch laadt, ter vervanging van de standaardcache. Objectcacheplugins installeren dit bestand, dat de functies wp_cache_get() en wp_cache_set() omleidt naar een Redis- of Memcached-server.

Niet te verwarren met de constante WP_CACHE, die een andere drop-in activeert, advanced-cache.php, gebruikt door paginacacheplugins. De paginacache voorkomt dat PHP voor hele pagina's wordt uitgevoerd; de objectcache versnelt pagina's die dynamisch moeten blijven: het beheer, de winkelwagen, de klantomgeving, de zoekfunctie. OPcache werkt nog op een ander niveau, bij het compileren van de PHP-code.
Sinds WordPress 6.1 bevat de tool Sitediagnose een test die aangeeft of een persistente objectcache zinvol zou zijn, op basis van het aantal opties, berichten of gebruikers van de site.
Redis of Memcached?
- Memcached omschrijft zichzelf als een gedistribueerd, krachtig systeem voor objectcaching in het geheugen. Het is een eenvoudige key-value-opslag die standaard de minst recent gebruikte items verwijdert (LRU); de servers weten niets van elkaar, en een extra server betekent extra geheugen.
- Redis is een opslag voor datastructuren in het geheugen, te gebruiken als cache, database of berichtenwachtrij. Het kan zijn gegevens naar schijf schrijven (RDB-snapshots, AOF-log) of dat achterwege laten, wat de documentatie een gangbaar gebruik voor een cache noemt.
Voor WordPress voldoen ze allebei. Redis heeft vaak de voorkeur vanwege de extra functies, maar de winst hangt vooral af van hoe dicht de cacheserver bij de site staat.
Voor WordPress
- Controleer of het beschikbaar is: op cloudhosting, een VPS of een pakket waarin het is inbegrepen, start de hoster of jijzelf de dienst; de bijbehorende PHP-extensie (redis of memcached) moet geïnstalleerd zijn.
- Installeer een objectcacheplugin, bijvoorbeeld Redis Object Cache, die PhpRedis, Predis en Relay ondersteunt en WP-CLI-opdrachten biedt zoals
wp redis status. De plugin LiteSpeed Cache ondersteunt ook Redis en Memcached, op elke webserver. - Eén prefix per site als meerdere WordPress-sites dezelfde Redis delen, anders raken hun gegevens vermengd.
- Niet open naar internet: Redis en Memcached moeten lokaal of op een privénetwerk luisteren, met authenticatie als die beschikbaar is.
Na een wijziging van de instellingen leegt WP Masquerade de paginacaches die het herkent; de pagina compatibiliteit met hosters en caches vermeldt welke.
Veelgemaakte fouten
Een objectcache op een kleine site inschakelen zonder het effect te meten, vergeten dat een volle of gestopte cache voor traagheid kan zorgen, of twee plugins installeren die vechten om het bestand object-cache.php. Gedraagt de site zich vreemd na een migratie, leeg dan de objectcache: die kan nog oude adressen of instellingen bevatten.