Utiliser des filtres pour personnaliser les paramètres du cache dans Jetpack Boost
Dans ce guide, vous apprendrez à personnaliser le comportement du cache de Jetpack Boost à l’aide de filtres afin d’améliorer les performances de votre site et de réduire la fragmentation du cache.
Comprendre le cache de pages dans Jetpack Boost
La fonctionnalité de cache de pages de Jetpack Boost génère et stocke des versions statiques des pages WordPress dynamiques. L’URL d’une page et les cookies du navigateur du visiteur sont les éléments que nous utilisons pour identifier une page.
Une personne qui consulte une page sans cookies dans son navigateur est appelée un « utilisateur anonyme », car aucune donnée ne permet de l’identifier. Le fichier de cache généré pour cette personne peut potentiellement être utilisé par de nombreux autres visiteurs. Pour maximiser la rapidité, ces pages mises en cache sont diffusées avant l’initialisation complète de WordPress, ce qui signifie que la plupart des fonctionnalités de WordPress ne sont pas disponibles à ce stade.
Pour les développeurs qui doivent exécuter du code dès le début du processus de diffusion d’une page, Jetpack Boost fournit l’Extra Code Loader. Cet outil permet d’exécuter du code personnalisé avant deux étapes critiques d’une requête WordPress :
- Lorsqu’une page mise en cache est diffusée.
- Lors de la création du tampon de sortie pour mettre en cache une nouvelle page.
Cette fonctionnalité permet aux développeurs d’effectuer les opérations ou modifications nécessaires, même lorsqu’ils travaillent avec des pages mises en cache, tout en garantissant rapidité et possibilités de personnalisation.
Personnaliser le comportement du cache avec des filtres
Pour modifier les paramètres du cache, vous pouvez créer un fichier nommé wp-content/boost-cache-extra.php. Jetpack Boost le chargera et l’exécutera comme n’importe quel autre script PHP. Le fichier doit comporter une balise ouvrante <?php.
Ce script s’exécutera très tôt dans le processus de diffusion d’une page, ce qui signifie que la plupart des fonctionnalités de WordPress ne seront pas disponibles. Toutefois, filters et actions peuvent être utilisés.
⚠️ Important : Veillez à ce que le fichier contienne du code PHP valide afin d’éviter tout problème susceptible de perturber votre site. Il est vivement recommandé de tester toute modification dans un environnement de préproduction avant de l’appliquer sur le site en production.
Filtres disponibles
Jetpack Boost fournit plusieurs filtres pour personnaliser le cache :
jetpack_boost_ignore_cookies: Accepte un paramètre, un tableau de noms de cookies. Ces noms de cookies sont ignorés et supprimés de la liste des cookies utilisés pour identifier un fichier de cache. Des expressions régulières peuvent être utilisées dans les noms de cookies. La liste par défaut des noms de cookies comprend les cookies Cloudflare décrits ici, une expression régulière correspondant à tout cookie commençant parsbsj_et les cookies tk_ai et tk_qs. Ainsi, un visiteur possédant l’un de ces cookies dans son navigateur verra le fichier de cache créé pour les visiteurs anonymes du site, au lieu d’obtenir un fichier de cache personnalisé.jetpack_boost_ignore_get_parameters: Accepte un paramètre, un tableau de noms de paramètres GET. Ces paramètres sont ignorés par le cache de la même manière que dans le filtre ci-dessus. La liste par défaut des paramètres comprend certains paramètres « utm_ » utilisés à des fins marketing.jetpack_boost_cache_parameters: Accepte un paramètre, un tableau. Ce filtre est similaire aux filtres ci-dessus, mais il contient à la fois les informationscookiesetget. Il s’exécute plus tôt dans la requête que les filtres ci-dessus, mais il est recommandé d’utiliser les autres filtres à sa place. Les filtres ci-dessus l’utilisent.jetpack_boost_cache_bypass_patterns: Accepte un paramètre, un tableau d’expressions régulières. Il permet au propriétaire du site de modifier la liste des modèles à comparer aux URL qui contournent la mise en cache. Il s’agit des URL répertoriées dans le formulaire Exceptions de la page des réglages.jetpack_boost_cache_request_cacheable: Accepte un paramètre booléen. Renvoyez true pour rendre la page actuelle susceptible d’être mise en cache.jetpack_boost_cache_accept_headers: Accepte un paramètre, un tableau d’en-têtes Accept que l’extension ne mettra pas en cache. La liste par défaut comprend différents types d’en-têtes JSON.
Dans la liste des cookies utilisés par Boost, les valeurs des cookies Jetpack Cookie Banner eucookielaw et personalized-ads-consent sont définies sur 1 afin que les visiteurs qui cliquent sur le bouton Accepter de la bannière de cookies reçoivent tous le même fichier de cache (si tous les autres cookies sont identiques), ce qui améliore l’efficacité du cache. Les cookies eux-mêmes ne sont pas modifiés, et un nouveau fichier de cache sera créé pour les visiteurs qui cliquent sur Accepter dans la bannière de cookies.
Si votre site possède un cookie dont la valeur change à chaque chargement de page, mais que cette valeur n’est utilisée par aucun code PHP, il peut empêcher votre site d’utiliser efficacement la mise en cache. Utilisez le jetpack_boost_cache_parameters filtre pour modifier cette valeur afin qu’elle reste constante à chaque chargement de page.
Pourquoi ignorer certains cookies ?
Les cookies jouent un rôle essentiel dans l’identification des visiteurs d’un site. Lorsqu’un utilisateur se connecte, un cookie est placé dans son navigateur, mais les cookies servent à diverses fins de suivi, au-delà de la simple modification du contenu des pages. Pour les nouveaux visiteurs et les robots qui consultent une version « anonyme » du site, une page fréquemment utilisée et mise en cache est généralement diffusée, car ces types de visiteurs sont souvent plus nombreux que ceux qui ont déjà interagi avec le site. Une fois qu’un cookie est défini, un nouveau fichier de cache est créé pour la page, et les visiteurs suivants possédant ce cookie recevront ce fichier de cache spécifique. Ce processus est essentiel, car la présence du cookie permet d’identifier le visiteur d’une certaine manière.
Cependant, si JavaScript sur le site définit un cookie qui n’influence pas l’apparence du site par l’intermédiaire de PHP, il peut être possible d’ignorer ce cookie en toute sécurité. Il est important de noter que certains cookies, comme les cookies de connexion WordPress, ne peuvent pas être ignorés en raison de leur rôle essentiel.
Exemples de modification du comportement du cache avec des filtres
Ignorer un cookie
Pour ignorer un cookie, par exemple un cookie défini par une bannière de cookies, utilisez le filtre nommé jetpack_boost_ignore_cookies. Cet exemple montre comment ignorer le cookie nommé cookie_banner_settings dans une extension de bannière de cookies hypothétique qui l’utilise. Tout code qui dépend de ce cookie doit être en JavaScript et s’exécuter dans le navigateur. Si PHP sur le serveur l’utilisait pour décider d’afficher la bannière ou d’exécuter d’autres fonctionnalités, le cookie ne peut pas être ignoré.
<?php
// Ignore the 'cookie_banner_settings' cookie.
function ignore_banner_cookie( $cookies ) {
$cookies[] = 'cookie_banner_settings';
return $cookies;
}
add_filter( 'jetpack_boost_ignore_cookies', 'add_test_cookie' );
Ce code garantit que le cookie_banner_settings cookie est ignoré, ce qui permet de diffuser un seul fichier de cache aux visiteurs anonymes.
Ignorer un paramètre GET
Pour exclure de l’identification du cache un paramètre GET spécifique tel que test, utilisez le filtre nommé jetpack_boost_ignore_get_parameters. Cet exemple garantit que les URL contenant le paramètre ?test servent le même fichier de cache que l’URL de base URL :
<?php
// ignore the 'test' GET parameter in the URL.
function ignore_test_get( $get) {
$get[] = "test";
return $get;
}
add_filter( 'jetpack_boost_ignore_get_parameters', 'ignore_test_get' );
Ce code supprime le paramètre nommé test de l’identification du cache, afin que les pages telles que celles correspondant à yourjetpack.blog/?test=123 diffusent le même fichier mis en cache que la page correspondant à yourjetpack.blog/.
Pages qui vont désormais partager le même fichier de cache :
yourjetpack.blog/yourjetpack.blog/?test=1yourjetpack.blog/?test=testingyourjetpack.blog/?test=123
Corriger une valeur de cookie qui change constamment
Ceci est un exemple dans lequel un cookie de compteur de pages hypothétique est défini sur 1 dans les paramètres du cache. Nous ne pouvons procéder ainsi que lorsque JavaScript affiche le compteur, et non PHP. Cela permet de mettre en cache la page WordPress et de la proposer à davantage de visiteurs, tandis que le compteur affiche le nombre de pages qu’ils ont visitées.
<?php
// Fix the "page_counter" cookie
function fix_page_counter( $parameters ) {
if ( isset( $parameters['cookies']['page_counter'] ) ) {
$parameters['cookies']['page_counter'] = 1;
}
return $parameters;
}
add_filter( 'jetpack_boost_cache_parameters', 'fix_page_counter' );
La personnalisation du comportement de votre cache à l’aide des filtres de Jetpack Boost vous permet d’optimiser les performances et de garantir une expérience fluide aux visiteurs de votre site. En ignorant les cookies et paramètres GET inutiles, vous pouvez proposer des pages mises en cache plus efficacement et réduire la charge du serveur.
Désactiver la mise en cache dans certaines conditions
Si vous souhaitez qu’une page de votre site s’affiche sans mise en cache, mais uniquement pour certains visiteurs, vous pouvez utiliser le filtre suivant : jetpack_boost_cache_request_cacheable. Dans cet exemple, tout visiteur utilisant l’adresse IP 192.168.1.1 et ayant le cookie « source=vip » pourra accéder à la page /about/ sans mise en cache.
<?php
function uncacheable_vips( $cacheable ) {
if (
isset( $_SERVER['REQUEST_URI'] ) && $_SERVER['REQUEST_URI'] === '/about/' &&
isset( $_COOKIE['source'] ) && $_COOKIE['source'] === 'vip' &&
isset( $_SERVER['REMOTE_ADDR'] ) && $_SERVER['REMOTE_ADDR'] === '192.168.1.1'
) {
return false;
} else {
return true;
}
}
add_filter( 'jetpack_boost_cache_request_cacheable', 'uncacheable_vips' );
Vous avez encore besoin d’aide ?
Veuillez contacter l’assistance. Nous serons ravis de vous conseiller.