skip to Main Content

Comment utiliser le cache non-persistant de WordPress

Divi : le thème WordPress le plus facile à utiliser

Divi : Le meilleur thème WordPress de tous les temps !

Avec plus de 600.000 téléchargements, Divi est le thème WordPress le plus populaire au monde. Il est complet, facile à utiliser et livré avec plus de 62 templates gratuits. [ Recommandé ]

Il existe différentes façons de rendre votre site plus performant : des plugins spécialisés vous permettent de mettre en cache des pages pour un contenu statique HTML, d’autres vous permettent de mettre en cache toutes les requêtes SQL et les objets de données, et enfin certains vous permettent de minimiser JavaScript et les fichiers CSS et même des solutions côté serveur.

mise-en-cache-sur-wordpress

Mais même si vous utilisez ces plugins, en utilisant des méthodes de mise en cache interne pour les objets et les résultats de la base de données sera une bonne pratique de développement, en ce sens que votre plugin ne dépend pas de la solution de cache dont dispose l’utilisateur final. Votre plugin doit être rapide lui-même, et ne doit pas compter sur d’autres plugins pour faire le sale boulot. Et si vous pensez que vous devez écrire votre propre code de gestion de cache, vous avez tort. WordPress est livré avec tout ce dont vous avez besoin pour mettre en œuvre rapidement diverse mise en cache de données. Vous devez juste identifier les parties de votre code qui bénéficieront de l’optimisation, et choisir un type de mise en cache en conséquence.

WordPress implémente deux méthodes différentes de mise en cache:

Non persistant

Les données restent dans le cache pendant le chargement de la page. (WordPress l’utilise pour mettre en cache la plupart des résultats de la requête de la base de données.)

Cherchez-vous les meilleurs thèmes et plugins WordPress ?

Téléchargez les meilleurs plugins et thèmes WordPress sur Envato et créez facilement votre site web. Déjà plus de 49.720.000 de téléchargements. [EXCLUSIF]

Persistent

Cela dépend du fonctionnement de la base de données, et les données mises en cache peuvent auto-expirer après un certain temps. (WordPress l’utilise pour mettre en cache le flux RSS, les mises à jour, etc.).

Dans ce tutoriel, nous allons envisager uniquement le cache non-persistant.

Comment mettre en place le cache non persistant « Non-Persistent »

Lorsque vous utilisez des fonctions telles que « get_posts() » ou « get_post_meta() », WordPress vérifie d’abord si les données dont vous avez besoin sont mis en cache. Si c’est le cas, alors vous obtiendrez des données à partir du cache; sinon, une requête vers base de données sera exécutée pour obtenir ces données. Une fois que les données sont récupérées, elles seront également mis en mémoire cache. Un cache non persistant est recommandé pour les résultats de la base de données qui pourraient être réutilisés lors de la création d’une page.

Le code de cache non persistant interne de WordPress est situé dans le fichier « cache.php » dans le répertoire « wp-includes », et il est géré par la classe « WP_Object_Cache ». Nous avons besoin d’utiliser deux fonctions de base: « wp_cache_set() » et « wp_cache_get() », en même temps que les fonctions supplémentaires « wp_cache_add() », « wp_cache_replace() », « wp_cache_flush() » et « wp_cache_delete() ». Le stockage en cache est organisé en groupes, dont chaque entrée a besoin pour sa clé unique. Pour éviter de mélanger les données par défaut de WordPress, utilisez des noms uniques est une meilleure pratique.

Exemple

Pour cet exemple, nous allons créer une fonction nommée « d4p_get_all_post_meta() », qui permet de récupérer toutes les données méta associées à un article. Cette première version ne comporte pas de mise en cache.

Créez Facilement votre site Web avec Elementor

Elementor vous permet de créer facilement n'importe quel design de site Web avec un look professionnel. Arrêtez de payer cher pour ce que vous pouvez faire vous-même. [ Gratuit ]

function d4p_get_all_post_meta($post_id) {
    global $wpdb;

    $data = array();
    $raw = $wpdb->get_results( "SELECT meta_key, meta_value FROM $wpdb->postmeta WHERE post_id = $post_id", ARRAY_A );

    foreach ( $raw as $row ) {
        $data[$row['meta_key']][] = $row['meta_value'];
    }

    return $data;
}

Chaque fois que vous appellerez cette fonction pour le même article, une requête SQL sera exécutée. Voici la fonction modifiée qui utilise le cache non persistant de WordPress :

function d4p_get_all_post_meta($post_id) {
    global $wpdb;

    if ( ! $data = wp_cache_get( $post_id, 'd4p_post_meta' ) ) {
        $data = array();
        $raw = $wpdb->get_results( "SELECT meta_key, meta_value FROM $wpdb->postmeta WHERE post_id = $post_id", ARRAY_A );

        foreach ( $raw as $row ) {
            $data[$row['meta_key']][] = $row['meta_value'];
        }

        wp_cache_add( $post_id, $data, 'd4p_post_meta' );
    }

    return $data;
}

Ici, nous utilisons un groupe de cache nommé « d4p_post_meta », et « post_id » qui est la clé. Avec cette fonction, nous allons vérifier si nous avons besoin de toutes les données de la mémoire. Sinon, nous exécutons le code normal pour obtenir des données, puis l’ajouterons au cache dans la ligne 13. Donc, si vous appelez cette fonction plus d’une fois, seul le premier exécutera une requête SQL. Tous les autres appels récupéreront les données du cache. Nous utilisons ici la fonction « wp_cache_add », donc si la combinaison « clé-groupe » existe déjà, il ne sera pas remplacé. Comparez cela avec « wp_cache_set », qui remplacera toujours une valeur existante sans vérifier.

Comme vous pouvez le voir, nous avons fait juste un petit changement au code existant mais potentiellement sauvé beaucoup d’appels vers la base de données ce qui rend potentiellement le chargement plus rapide.

Remarques Importantes

Le cache non-persistante est disponible uniquement pendant le chargement de la page en cours; une fois la page suivante des charges, il sera vide une fois de plus.

La taille de stockage est limitée par la mémoire totale disponible sur PHP alloué par le serveur. Ne stockez pas un grand ensemble de données, ou vous pourriez vous retrouver avec un message « Out of memory ».

L’utilisation de ce type de cache n’a de sens que pour des opérations répétées plus d’une fois durant la création d’une page.

Créez Facilement votre Boutique en ligne

Téléchargez gratuitement WooCommerce, le meilleurs plugins e-commerce pour vendre vos produits physiques et numériques sur WordPress. [GRATUIT]

Il fonctionne avec WordPress depuis la version 2.0.

C’est tout pour ce tutoriel. J’espère qu’il vous permettra de mieux mettre en cache votre blog.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

Thèmes WordPress cool que j'ai trouvé sur
Et il y a plus de 50 000 thèmes et modèles parmi lesquels choisir!

Back To Top
7 Partages
Partagez4
Tweetez
Enregistrer3
WhatsApp