Webhosting

Redis en Memcached (objectcache)

Definitie

Redis en Memcached zijn opslagservers in het werkgeheugen die WordPress gebruikt als persistente objectcache. Ze bewaren tussen twee bezoeken het resultaat van databasequery's en andere berekende gegevens, wat MySQL of MariaDB ontlast en vooral dynamische pagina's, het beheer en webwinkels versnelt.

Redis en Memcached (objectcache), Webhosting

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.

Schema van de persistente objectcache van WordPress: WordPress vraagt een gegeven op, zoals een optie, een bericht of een menu; het bestand object-cache.php in wp-content vervangt de standaard objectcache; staat het gegeven in Redis of Memcached, dan komt het meteen terug; zo niet, dan volgt een SQL-query naar MySQL of MariaDB en wordt het resultaat in de cache opgeslagen.
Een gegeven dat in Redis of Memcached staat, bespaart een SQL-query, voor alle volgende pagina's.

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.

Video: “What is Redis?” (IBM Technology, in het Engels)

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.

Verder lezen

  • Pagina Compatibel met hosting en cache

Bronnen

  1. WordPress Developer Resources: WP_Object_Cache (externe link, opent in een nieuw tabblad)
  2. Make WordPress Core: New cache Site Health checks in WordPress 6.1 (externe link, opent in een nieuw tabblad)
  3. Redis Docs: Redis persistence (externe link, opent in een nieuw tabblad)
  4. Memcached Documentation (externe link, opent in een nieuw tabblad)

Alle definities

WordPress-beveiliging, zonder ruis

Eén e-mail wanneer het ertoe doet: nieuw waargenomen aanvallen, updates van de plugin en praktische gidsen. Geen spam, afmelden met één klik.

Begin gratis, stap over op Pro wanneer je eraan toe bent

De gratis versie verbergt WordPress al en verplaatst de inlogpagina. Pro voegt aliassen, tweestapsverificatie en bewaking toe.