Comment configurer la mise en cache Redis pour accélérer WordPress sur Ubuntu 14.04

introduction

Redis est un magasin de valeurs de clé open source pouvant fonctionner à la fois en tant que magasin en mémoire et en tant que cache. Redis est un serveur de structure de données qui peut être utilisé en tant que serveur de base de données seul ou en association avec une base de données relationnelle telle que MySQL pour accélérer les choses, comme nous le faisons dans ce didacticiel.

Pour ce didacticiel, Redis sera configuré en tant que cache pour WordPress afin d’alléger les requêtes de base de données redondantes et fastidieuses utilisées pour rendre une page WordPress. Le résultat est un site WordPress beaucoup plus rapide, qui utilise moins de ressources de base de données et fournit un cache persistant ajustable. Ce guide s’applique à Ubuntu 14.04.

Bien que chaque site soit différent, vous trouverez ci-dessous un exemple de référence d'une page d'accueil d'installation Wordpress par défaut avec et sans Redis, comme indiqué dans ce guide. Les outils de développement Chrome ont été utilisés pour tester avec la mise en cache du navigateur désactivée.

Page d'accueil par défaut de WordPress sans Redis:

Temps de chargement de page: 804ms

Page d'accueil par défaut de WordPress avec Redis:

Temps de chargement des pages: 449ms

[.note] #Note: Cette implémentation de la mise en cache Redis pour WordPress repose sur un script tiers bien commenté. Le script est hébergé sur le serveur d'actifs de DigitalOcean, mais a été développé en externe. Si vous souhaitez créer votre propre implémentation de la mise en cache Redis pour WordPress, vous devrez faire un peu plus de travail en fonction des concepts présentés ici.
#

Redis vs. Memcached

Memcached est également un choix de cache populaire. Cependant, à ce stade, Redis fait tout ce que Memcached peut faire, avec un ensemble de fonctionnalités beaucoup plus vaste. CeStack Overflow page contient des informations générales comme un aperçu ou une introduction aux personnes qui découvrent Redis.

Comment fonctionne la mise en cache?

La première fois qu'une page WordPress est chargée, une requête de base de données est effectuée sur le serveur. Redis se souvient, oucaches, de cette requête. Ainsi, lorsqu'un autre utilisateur charge la page Wordpress, les résultats sont fournis à partir de Redis et de la mémoire sans avoir à interroger la base de données.

L’implémentation Redis utilisée dans ce guide fonctionne comme un cache d’objets persistant pour WordPress (sans expiration). Un cache d'objets fonctionne en mettant en mémoire cache les requêtes SQL nécessaires au chargement d'une page WordPress.

Lors du chargement d'une page, Redis fournit les résultats de la requête SQL résultants à partir de la mémoire. La requête n'a donc pas besoin de toucher la base de données. Il en résulte des temps de chargement de page beaucoup plus rapides et un impact moindre du serveur sur les ressources de la base de données. Si une requête n'est pas disponible dans Redis, la base de données fournit le résultat et Redis ajoute le résultat à son cache.

Si une valeur est mise à jour dans la base de données (par exemple, une nouvelle publication ou une nouvelle page est créée dans WordPress), la valeur Redis de cette requête est invalidée pour empêcher la présentation de mauvaises données mises en cache.

Si vous rencontrez des problèmes avec la mise en cache, le cache Redis peut être purgé à l'aide de la commandeflushall de la ligne de commande Redis:

redis-cli

Une fois que vous voyez l'invite, tapez:

flushall

Référence supplémentaire:WordPress Object Cache Documentation

Conditions préalables

Avant de commencer ce guide, vous devez configurer un utilisateur sudo et installer WordPress.

  • Ubuntu 14.04 Droplet (1 Go ou plus recommandé)

  • Ajouter unsudo user

  • Installez WordPress. Ce guide a été testé avecthese instructions, bien qu'il existe de nombreuses façons d'installer WordPress

[[step-1 -—- install-redis]] == Étape 1 - Installer Redis

Pour utiliser Redis avec WordPress, deux packages doivent être installés:redis-server etphp5-redis. Le packageredis-server fournit Redis lui-même, tandis que le packagephp5-redis fournit une extension PHP pour les applications PHP comme WordPress pour communiquer avec Redis.

Installez le logiciel:

sudo apt-get install redis-server php5-redis

[[step-2 -—- configure-redis-as-a-cache]] == Étape 2 - Configurer Redis en tant que cache

Redis peut fonctionner à la fois comme magasin de base de données NoSQL et comme cache. Pour ce guide et cas d'utilisation, Redis sera configuré en tant que cache. Pour ce faire, les paramètres suivants sont requis.

Modifiez le fichier/etc/redis/redis.conf et ajoutez les lignes suivantes en bas:

sudo nano /etc/redis/redis.conf

Ajoutez ces lignes à la fin du fichier:

maxmemory 256mb
maxmemory-policy allkeys-lru

Une fois les modifications terminées, enregistrez et fermez le fichier.

[[step-3 -—- get-redis-cache-backend-script]] == Étape 3 - Obtention du script de backend du cache Redis

Ce script PHP pour WordPress a été initialement développé parEric Mann. C'est un backend de cache d'objets Redis pour WordPress.

Téléchargez le scriptobject-cache.php. Ce téléchargement provient du serveur d'actifs de DigitalOcean, maisthis is a third-party script. Vous devriez lire les commentaires dans le script pour voir comment cela fonctionne.

Téléchargez le script PHP:

wget https://assets.digitalocean.com/articles/wordpress_redis/object-cache.php

Déplacez le fichier dans le répertoire/wp-content de votre installation WordPress:

sudo mv object-cache.php /var/www/html/wp-content/

En fonction de votre installation WordPress, votre emplacement peut être différent.

[[step-4 -—- enable-cache-settings-in-wp-config-php]] == Étape 4 - Activer les paramètres de cache dans wp-config.php

Ensuite, modifiez le fichierwp-config.php pour ajouter un sel de clé de cache avec le nom de votre site (ou toute chaîne de votre choix).

nano /var/www/html/wp-config.php

Ajoutez cette ligne à la fin de la section* Authentication Unique Keys and Salts.:

define('WP_CACHE_KEY_SALT', 'example.com');

Vous pouvez utiliser votre nom de domaine ou une autre chaîne en tant que sel.

Note: Pour les utilisateurs hébergeant plus d'un site WordPress, chaque site peut partager la même installation Redis tant qu'il possède son propre sel de clé de cache unique.

Ajoutez également la ligne suivante après la ligneWP_CACHE_KEY_SALT pour créer un cache persistant avec le plug-in de cache d'objets Redis:

define('WP_CACHE', true);

Tous ensemble, votre fichier devrait ressembler à ceci:

 * Authentication Unique Keys and Salts.

. . .

define('NONCE_SALT',       'put your unique phrase here');

define('WP_CACHE_KEY_SALT', 'example.com');
define('WP_CACHE', true);

Enregistrez et fermez le fichier.

[[step-5 -—- restart-redis-and-apache]] == Étape 5 - Redémarrez Redis et Apache

Enfin, redémarrezredis-service etapache2.

Redémarrer Redis:

sudo service redis-server restart

Redémarrez Apache:

sudo service apache2 restart

Redémarrezphp5-fpm si vous l'utilisez; cela ne fait pas partie de l'installation de base sur DigitalOcean:

sudo service php5-fpm restart

C'est ça! Votre site WordPress utilise maintenant la mise en cache Redis. Si vous vérifiez la vitesse de chargement de vos pages et l'utilisation des ressources, vous devriez constater des améliorations.

Surveiller Redis avec redis-cli

Pour surveiller Redis, utilisez la commanderedis-cli comme ceci:

redis-cli monitor

Lorsque vous exécutez cette commande, vous verrez la sortie en temps réel de Redis servant des requêtes en cache. Si vous ne voyez rien, visitez votre site Web et rechargez une page.

Vous trouverez ci-dessous un exemple de sortie d’un site WordPress configuré selon ce guide avec Redis:

OK
1412273195.815838 "monitor"
1412273198.428472 "EXISTS" "example.comwp_:default:is_blog_installed"
1412273198.428650 "GET" "example.comwp_:default:is_blog_installed"
1412273198.432252 "EXISTS" "example.comwp_:options:notoptions"
1412273198.432443 "GET" "example.comwp_:options:notoptions"
1412273198.432626 "EXISTS" "example.comwp_:options:alloptions"
1412273198.432799 "GET" "example.comwp_:options:alloptions"
1412273198.433572 "EXISTS" "example.comwp_site-options:0:notoptions"
1412273198.433729 "EXISTS" "example.comwp_:options:notoptions"
1412273198.433876 "GET" "example.comwp_:options:notoptions"
1412273198.434018 "EXISTS" "example.comwp_:options:alloptions"
1412273198.434161 "GET" "example.comwp_:options:alloptions"
1412273198.434745 "EXISTS" "example.comwp_:options:notoptions"
1412273198.434921 "GET" "example.comwp_:options:notoptions"
1412273198.435058 "EXISTS" "example.comwp_:options:alloptions"
1412273198.435193 "GET" "example.comwp_:options:alloptions"
1412273198.435737 "EXISTS" "example.comwp_:options:notoptions"
1412273198.435885 "GET" "example.comwp_:options:notoptions"
1412273198.436022 "EXISTS" "example.comwp_:options:alloptions"
1412273198.436157 "GET" "example.comwp_:options:alloptions"
1412273198.438298 "EXISTS" "example.comwp_:options:notoptions"
1412273198.438418 "GET" "example.comwp_:options:notoptions"
1412273198.438598 "EXISTS" "example.comwp_:options:alloptions"
1412273198.438700 "GET" "example.comwp_:options:alloptions"
1412273198.439449 "EXISTS" "example.comwp_:options:notoptions"
1412273198.439560 "GET" "example.comwp_:options:notoptions"
1412273198.439746 "EXISTS" "example.comwp_:options:alloptions"
1412273198.439844 "GET" "example.comwp_:options:alloptions"
1412273198.440764 "EXISTS" "example.comwp_:options:notoptions"
1412273198.440868 "GET" "example.comwp_:options:notoptions"
1412273198.441035 "EXISTS" "example.comwp_:options:alloptions"
1412273198.441149 "GET" "example.comwp_:options:alloptions"
1412273198.441813 "EXISTS" "example.comwp_:options:notoptions"
1412273198.441913 "GET" "example.comwp_:options:notoptions"
1412273198.442023 "EXISTS" "example.comwp_:options:alloptions"
1412273198.442121 "GET" "example.comwp_:options:alloptions"
1412273198.442652 "EXISTS" "example.comwp_:options:notoptions"
1412273198.442773 "GET" "example.comwp_:options:notoptions"
1412273198.442874 "EXISTS" "example.comwp_:options:alloptions"
1412273198.442974 "GET" "example.comwp_:options:alloptions"

Appuyez surCTRL-C pour arrêter la sortie.

Ceci est utile pour voir exactement quelles requêtes Redis est en train de traiter.

Conclusion

Après avoir suivi ce guide, WordPress sera maintenant configuré pour utiliser Redis en tant que cache sur Ubuntu 14.04.

Vous trouverez ci-dessous des guides de sécurité et d'administration supplémentaires susceptibles d'intéresser WordPress: