Définition
WP Rocket est un système de cache puissant et permet d'améliorer énormément les performances d'un site Wordpress. Comme tout plugin de cache, il permet de garder en mémoire les pages qui ont déjà été chargées. Cela permet donc de réduire le temps de chargement de vos pages et donc d’améliorer la vitesse de votre site.
Mais il faut savoir que les paramètres de WP Rocket peuvent également influencer négativement un site web si cela est mal configuré.
Ce guide permettra de définir les paramètres idéaux pour un gain de performance optimal.
Procédure
WP Rocket est un système de cache puissant et permet d'améliorer énormément les performances d'un site Wordpress. Comme tout plugin de cache, il permet de garder en mémoire les pages qui ont déjà été chargées. Cela permet donc de réduire le temps de chargement de vos pages et donc d’améliorer la vitesse de votre site.
Mais il faut savoir que les paramètres de WP Rocket peuvent également influencer négativement un site web si cela est mal configuré.
Ce guide permettra de définir les paramètres idéaux pour un gain de performance optimal.
Par défaut, WP Rocket active le préchargement de cache. Ceci permet de créer les fichiers cache de chaque page avant même qu’ils soient ouverts.
L’avantage réside dans le fait que la page ne nécessitera plus d’être généré au moment du chargement de celui-ci par le navigateur web et améliorera donc la vitesse d'affichage de votre site.
1. Le préchargement exécuté par WP CRON
Le préchargement du cache de WP Rocket se fait à l’exécution du WP Cron qui permet de lancer les différents évènements de Wordpress. Cela pose cependant un problème dans son utilisation car WP Cron se charge à chaque ouverture d’une page. Par conséquent, le pré-chargement se fait durant le chargement d’une autre page.
Ceci est très problématique. Au lieu de charger une seule page, WordPress va charger plusieurs pages et en finalité le temps de chargement de la page va augmenté.
De plus, cela va également faire travailler énormément l’I/O de l’espace de stockage de votre hébergement dès qu’il y a un chargement.
2. Le timeout de WP CRON
Un autre problème rencontré dans nos test est que WP Cron est limité par WP_CRON_LOCK_TIMEOUT. Ceci est une variable qui permet de définir le temps alloué à WP CRON pour effectué les tâches qu'il a à réaliser. Cela est défini dans le fichier wp-config.php
Par conséquent, avec un temps limité pour WP CRON, le préchargement de cache ne va générer que quelques pages, puis reprendra lors d'un prochain chargement de pages.
Cependant, au prochain chargement de page, WP Rocket va être obligé de remuer tout son cache et cela va créer des charges importantes au niveau de l’I/O du serveur et causant ainsi une baisse de la vitesse générale du site.
3. WP Rocket associé à un autre système de cache
Si vous utilisez un système de cache tel que Varnish, NGINX, LSCache, … vous aurez des périodes où le visiteur n’atteindra jamais une seule page.
Pour faire simple, l'interactivé entre WP Rocket et le serveur de cache va venir perturber le préchargement du cache qui ne fonctionnera pas du tout. Il sera suspendu, en attente de l’ouverture d’un fichier PHP de WordPress et à ce moment là le préchargement du cache s’exécutera en amont, et une vague très intense d’opérations pré-planifiés s’exécutera, risquant de saturer le serveur et risquant de bloquer le chargement de cette page.
1. Augmenter la durée de vie du cache
Une fois que le cache est entièrement pré-chargé, le pré-chargement ne pose plus de problème puisqu’il ne fait plus rien. Toutefois, le cache pré-chargé peut expirer et cela relancera le préchargement à nouveau.
Dans l’idéal, il faudrait mettre le cache sur une durée de vie illimitée. Cela tombe bien car cela peut être configuré dans WP Rocket. De plus ce plugin est bien conçu car il supprime le cache d'une page, article ou produit (Woocommerce) si il y a eu une modification dans celle ci. Il est donc inutile de recréer régulièrement le cache et on peut donc configurer la durée de vie sur illimité. Pour cela suivez ces étapes :
2. Exécuter le préchargement du cache avec un cron job et le désactiver sur le chargement des pages WordPress
Ceci va permettre de régler les différents problèmes énumérer juste avant à savoir :
Pour cela, deux actions vont devoir être réalisées :
Ce fichier se situe à la racine de votre site. Il faudra donc se rendre dans le code de celui ci pour mettre en place cette ligne "define( ‘DISABLE_WP_CRON’, true );".
Exemple :
<?php
/**
* La configuration de base de votre installation WordPress.
*
* Ce fichier est utilisé par le script de création de wp-config.php pendant
* le processus dâinstallation. Vous nâavez pas à utiliser le site web, vous
* pouvez simplement renommer ce fichier en « wp-config.php » et remplir les
* valeurs.
*
* Ce fichier contient les réglages de configuration suivants :
*
* Réglages MySQL
* Préfixe de table
* Clés secrètes
* Langue utilisée
* ABSPATH
*
* @link https://fr.wordpress.org/support/article/editing-wp-config-php/.
*
* @package WordPress
*/
// ** Réglages MySQL - Votre hébergeur doit vous fournir ces informations. ** //
/** Nom de la base de données de WordPress. */
define( 'DB_NAME', "xxxxxxxxx" );
/** Utilisateur de la base de données MySQL. */
define( 'DB_USER', "xxxxxxxxx" );
/** Mot de passe de la base de données MySQL. */
define( 'DB_PASSWORD', "xxxxxxxx" );
/** Adresse de lâhébergement MySQL. */
define( 'DB_HOST', "xxx.xxx.xxx.xxx" );
/** Jeu de caractères à utiliser par la base de données lors de la création des tables. */
define( 'DB_CHARSET', 'utf8' );
/**
* Type de collation de la base de données.
* Nây touchez que si vous savez ce que vous faites.
*/
define( 'DB_COLLATE', '' );
/**#@+
* Clés uniques dâauthentification et salage.
*
* Remplacez les valeurs par défaut par des phrases uniques !
* Vous pouvez générer des phrases aléatoires en utilisant
* {@link https://api.wordpress.org/secret-key/1.1/salt/ le service de clés secrètes de WordPress.org}.
* Vous pouvez modifier ces phrases à nâimporte quel moment, afin dâinvalider tous les cookies existants.
* Cela forcera également tous les utilisateurs à se reconnecter.
*
* @since 2.6.0
*/
define( 'AUTH_KEY', 'mettez une phrase unique ici' );
define( 'SECURE_AUTH_KEY', 'mettez une phrase unique ici' );
define( 'LOGGED_IN_KEY', 'mettez une phrase unique ici' );
define( 'NONCE_KEY', 'mettez une phrase unique ici' );
define( 'AUTH_SALT', 'mettez une phrase unique ici' );
define( 'SECURE_AUTH_SALT', 'mettez une phrase unique ici' );
define( 'LOGGED_IN_SALT', 'mettez une phrase unique ici' );
define( 'NONCE_SALT', 'mettez une phrase unique ici' );
/**#@-*/
/**
* Préfixe de base de données pour les tables de WordPress.
*
* Vous pouvez installer plusieurs WordPress sur une seule base de données
* si vous leur donnez chacune un préfixe unique.
* Nâutilisez que des chiffres, des lettres non-accentuées, et des caractères soulignés !
*/
$table_prefix = 'wp_';
/**
* Pour les développeurs : le mode déboguage de WordPress.
*
* En passant la valeur suivante à "true", vous activez lâaffichage des
* notifications dâerreurs pendant vos essais.
* Il est fortemment recommandé que les développeurs dâextensions et
* de thèmes se servent de WP_DEBUG dans leur environnement de
* développement.
*
* Pour plus dâinformation sur les autres constantes qui peuvent être utilisées
* pour le déboguage, rendez-vous sur le Codex.
*
* @link https://fr.wordpress.org/support/article/debugging-in-wordpress/
*/
define( 'WP_DEBUG', false );
/* Câest tout, ne touchez pas à ce qui suit ! Bonne publication. */
/** Chemin absolu vers le dossier de WordPress. */
if ( ! defined( 'ABSPATH' ) )
define( 'ABSPATH', dirname( __FILE__ ) . '/' );
/** Réglage des variables de WordPress et de ses fichiers inclus. */
require_once( ABSPATH . 'wp-settings.php' );
/** Désactiver WP_CRON au chargement d'une page **/
define( 'DISABLE_WP_CRON', true );
Pour cela il nous faudra lancer cette ligne de commande via une tâche CRON :
flock /chemin/vers/site/wp-cron.lock php /chemin/vers/site/wp-cron.php
Pour information, Flock permettra de ne pas avoir deux wp-cron.php en cours d’exécution au même moment.
Si, par exemple, sur ISPConfig, il y a plusieurs interpréteur PHP, il faudra remplacer “php” par “php7.3”, “php7.4”, “/usr/local/php-7.3.8/bin/php”, … selon l’interpréteur le plus adéquat.
Pour mettre en place la tâche CRON sur un hébergement mutualisé lié au LWS Panel, il vous suffira de suivre cette documentation et d'indiquer en adresse de script :
http://votresite.tld/wp-cron.php
(remplacer votresite.tld par votre nom de doamine)
Pour savoir comment mettre en place cette tâche CRON sur un hébergement cPanel, je vous invite à suivre cette documentation
Pour savoir comment mettre en place cette tâche CRON sur un serveur VPS ISPConfig, je vous invite à suivre cette documentation
Pour savoir comment mettre en place cette tâche CRON sur un serveur VPS via commande SSH, je vous invite à suivre cette documentation
Si vous souhaitez en savoir plus sur WP Rocket, je vous invite à lire cette article de blog
Trucs et astuces
Si vous souhaitez en savoir plus sur WP Rocket, je vous invite à lire cette article de blog