Bien configurer WP Rocket pour optimiser le cache de votre site

Procédure

Qu'est ce que WP Rocket ?

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.

Comment fonctionne le système de cache de WP Rocket ?

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.

 

Les problèmes rencontrés avec le pré-chargement du cache de WP Rocket

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.
 

Comment remédier à ces problèmes et optimiser mon site Wordpress ?

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 :
 

  • Dans le menu de gauche, allez dans Réglages puis cliquez sur WP Rocket.

Bien configurer WP Rocket pour optimiser le cache de votre site

 

  • Une fois sur le plugin WP Rocket, allez dans le menu "Cache" puis configurer le dernier élément "Délai de nettoyage du cache" en indiquant 0 heures pour configurer une durée de cache illimité

Bien configurer WP Rocket pour optimiser le cache de votre site

 

  • Cliquez sur Enregistrer les Modifications

Bien configurer WP Rocket pour optimiser le cache de votre site

 

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 :

  • WP Cron ne se charge plus durant le chargement d’une page et donc le préchargement n’influence plus le temps de chargement d’une page.
  • WP Cron n’est plus limité par le max_execution_time et WP_CRON_LOCK_TIMEOUT.
  • Le préchargement du cache peut se faire en un bloc, plus de reprise nécessaire et donc plus de surcharge au niveau du disque (I/O).
  • WP Cron s’exécute toujours, que la page soit chargée depuis l’exécution du PHP ou depuis le serveur de cache utilisé (Varnish/NGINX/...)

 

Pour cela, deux actions vont devoir être réalisées :

  • Modifier le fichier wp-config.php

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 );

 

  • Mettre en place une tâche CRON pour subtituer la désactivation de WP_CRON

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

Liens utiles

Si vous souhaitez en savoir plus sur WP Rocket, je vous invite à lire cette article de blog

Notez cet article


Vous avez noté 0 étoile(s)

Cet article vous a-t-il été utile ?

Merci !

N'hésitez pas à commenter nos pages afin de nous aider à les améliorer si besoin.

Vous souhaitez nous laisser un commentaire concernant cet article ?

Si cela concerne une erreur dans la documentation ou un manque d'informations, n'hésitez pas à nous en faire part depuis le formulaire.






Pour toutes questions non liées à cette documentation ou problèmes techniques sur l'un de vos services, cliquez ici si vous souhaitez contacter le support commercial ou le support technique