Als Redis voor je WordPress-site is geactiveerd, dan wil je natuurlijk weten hoe je hier optimaal gebruik van maakt. In dit FAQ-artikel leggen we het gebruik van één van de vier plugins uit en maak je gebruik van Redis als snelle cache-opslaglocatie.

Let op: gebruik maar één object cache plugin tegelijkertijd!

Link naar deze kopWP Redis

WP Redis heeft na installatie een handmatige configuratie in wp-config.php nodig. Voeg direct onder <?php toe:

$redis_server = array(
	'host' => '/tmp/redis.sock'
);

Via FTP moet je het bestand object-cache.php kopiëren van wp-content/plugins/wp-redis/object-cache.php naar wp-content/.

WP Redis is dan actief voor je site.

Link naar deze kopGescheiden Redis cache tussen staging- en productie-websites

Omdat Redis een in-memory cache-opslaglocatie is, kunnen cache-keys elkaar in de weg zitten als je op een staging- én productie-website Redis gebruikt. Gelukkig kun je dit voorkomen door de cache van jouw sites te voorzien van een unieke salt.

Als je uitgaat van de volgende directorystructuur op example.com als voorbeeld:

  • /staging/wp-config.php
  • /www/wp-config.php

Voeg dan toe in staging/wp-config:

define( 'WP_CACHE_KEY_SALT', 'staging:' );

en in www/wp-config:

define( 'WP_CACHE_KEY_SALT', 'productie:' );

Hiermee zorg je ervoor dat beide sites een unieke naam voor de cache gebruiken in Redis en WordPress.

Link naar deze kopAls object cache ‘uit sync’ raakt met WP alloptions

In WordPress is alloptions een cache-key waarin alle opties geladen zijn die via autoload beschikbaar zijn. Het resultaat van de SQL query SELECT * FROM wp_options WHERE autoload = 'yes' wordt hierin opgeslagen en dat resultaat is met één call beschikbaar.

Als deze cache-key in Redis opgeslagen is, en tussendoor door WordPress wordt veranderd, dan kan dit uit-sync raken: Redis’ alloptions en WordPress’ alloptions verschillen. Je kunt dit voorkomen door de volgende functie op te nemen in je site-specifiek plugin of het thema functions.php-bestand.

/**
 * Deletes the alloptions cache value whenever an option is modified. 
 * 
 * This code triggers a cache delete even when non-autoloaded options are saved because
 * we don't have easy access to check if the option is autoload=1 or not
 * 
 * Ideally this should be done in core itself, only when alloptions needs to be updated.
 */
function _maybe_clear_alloptions_cache( $option ) {
	if ( ! wp_installing() ) {
		$alloptions = wp_load_alloptions();

		if ( isset( $alloptions[ $option ] ) ) {
			wp_cache_delete( 'alloptions', 'options' );
		}
	}
}
add_action( 'added_option',   '_maybe_clear_alloptions_cache' );
add_action( 'updated_option', '_maybe_clear_alloptions_cache' );
add_action( 'deleted_option', '_maybe_clear_alloptions_cache' );

Let op: vanwege de complexiteit kan Vevida helaas geen ondersteuning verlenen op object caches en plugins. Test verschillende instellingen goed.

Wat vind jij van dit antwoord?

Bedankt voor je feedback!

Er is een fout opgetreden. Probeer het later opnieuw.