Outrepasser DONOTCACHEPAGE via un filtre

Dans cet article

Introduction

La plupart des plugins de mise en cache pour WordPress utilisent un standard de facto pour exclure les pages de la mise en cache : la constante DONOTCACHEPAGE. Si elle est définie à true lors d’une requête, WP Rocket ne mettra pas en cache la page en question, mais autorisera une requête régulière de base de donnée sur WordPress.

Néanmoins, dans certains rares cas, ce comportement doit être outrepassé, et WP Rocket vous permet de faire ça. Voici la manière de procéder.

Comment WP Rocket met en cache une page

Le but final de tout plugin de mise en cache est de ne pas avoir à charger WordPress, tout en livrant chaque page en un ensemble de fichiers statiques vers le navigateur dès que cela est possible.

La mise en cache d’une page avec WP Rocket peut être simplifiée comme suit :

1
Un des premiers fichiers WordPress charge après la requite initiale faite à son index.php est wp-config.php. La première chose que WP Rocket a faite est de definir une constante WP_CACHE à true au début de wp-config.php: define( 'WP_CACHE', true);
2
Cela dit Ă  WordPress de charger wp-content/advanced-cache.php.
3
Depuis le fichier advanced-cache.php WP Rocket dit Ă  WordPress de charger wp-rocket/inc/front/process.php.
4
Depuis le fichier process.php WP Rocket charge wp-content/wp-rocket-config/{site-url.tld}.php qui contient la configuration définie par l’utilisateur
5
Toujours depuis le process.php, et après avoir effectuĂ© quelques vĂ©rifications pour les exclusions etc., WP Rocket met alors en cache les fichiers pour les pages en requĂŞte. 

Une fois que la page a été mise en cache, la requête sera directement envoyée depuis le cache, sans aucune requête vers la base de donnée ou le PHP.

Exclure une page de la mise en cache via DONOTCACHEPAGE

Certains types de pages doivent impérativement ne pas être mises en cache. Prenons l’exemple d’un site de e-commerce : quand un client arrive sur la page de paiement, ils ne veulent pas voir une page mise en cache avec les informations de paiement d’un client précédent.

Les extensions élaborés comme WooCommerce (et beaucoup d’autres) utilisent la constante DONOTCACHEPAGE pour que les extensions de mise en cache connaissent les pages et terminaisons à ne jamais mettre en cache.

Par conséquent, toutes les extensions de mise en cache connues, dont WP Rocket, sont compatibles avec la constante et ne mettrons pas en cache une requête pour laquelle DONOTCACHEPAGE est définie à true.

Outrepasser DONOTCACHEPAGE via un filtre dans WP Rocket

La constante DONOTCACHEPAGE est aussi pratique qu’utilisée, mais il existe des cas où l’administrateur d’un site a besoin de l’outrepasser dans le but d’avoir une requête spécifique mise en cache, même si une extension tierce a essayé d’employer la constant commune pour l’exclusion de cache d’une page.

WP Rocket vous aide dans ce cas. Tout ce que vous avez besoin de faire, c’est passer true à un filtre special dans WP Rocket, et WP Rocket ignorera la constante DONOTCACHEPAGE.

add_filter( 'rocket_override_donotcachepage', '__return_true', PHP_INT_MAX );

Plugin d’aide

Le plugin d'aide suivant ajoutera automatiquement le code ci-dessus, pour facilement outrepasser une constante DONOTCACHEPAGE.

đź“Ą   TĂ©lĂ©charger (.zip):  WP Rocket | Forcer la Mise en Cache

DĂ©veloppeurs : Vous trouverez le  code pour ce plugin sur GitHub.

Exemple : les pages mises en cache pour les membres

Imaginons, vous utilisez une extension d’adhésion de membres qui donne accès à du contenu spécifique uniquement pour les membres connectés. Vous voudrez activer l’option cache utilisateur dans WP Rocket afin d’offrir à vos membres connectés des pages mises en cache avec un téléchargement rapide.

Certaines extensions d’adhésion de membres définissent la constante DONOTCACHEPAGE pour les membres connectés, car un cas courant voudrait ne pas envoyer de contenu statique mais dynamique aux membres.

Dans notre exemple toutefois, vous voulez seulement livrer du contenu statique à vos membres connectés, en plus du contenu que les utilisateurs non enregistrés peuvent voir. Vous aurez donc besoin d’outrepasser la directive DONOTCACHEPAGE mise en place par l'extension d’adhésion de membres afin que l’option cache utilisateur de WP Rocket fonctionne correctement.

Pour cela, il vous suffit de télécharger, d’installer et d’activer le plugin d’aide ci-dessus.