WordPress et les transients

L’API WordPress transients est un outil très utile qui permet aux développeurs de mettre en cache  des données comme le résultat d’une requête pour des utilisations futures.
Par exemple, vous avez un bloc qui recupere les 10 derniers billets d’une catégorie, donc qui n’a pas besoin d’être recalculée a chaque chargement de page.

Ici nous allons mettre en cache pour une heure (60*60*1), le troisieme parametre de la fonction set_transient.

<?php
// Recherche si le transient existe
if ( false === ( $value = get_transient( 'newsHome_cached' ) ) ) {
      // la requete sera executée une seule fois pour la creation du transient
       $breves_cached_result = new WP_Query( 'cat=1&showposts=10' );
       set_transient( 'newsHome2_cached', $breves_cached_result,60 * 60 * 1);
}
else {
    // Si le transiant existe, on affiche les resultats
      $recent = get_transient('newsHome_cached');
       while($recent->have_posts()) : $recent->the_post();
       echo '<li><a href="';
       the_permalink();
       echo'" rel="bookmark" title="';
       the_title();
       echo '"></li>';
       endwhile;
}
?>

La documentation officielle est disponible sur le codex

Si vous voulez supprimer le transient lors de la publication d’un post quelquonque rien de plus simple, il suffit d’ajouter dans le fichier functions.php de votre thème :

add_action('publish_post', 'remove_cache_transients');

function remove_cache_transients() {
    delete_transient('newsHome_cached');
}

On peut donc se laisser aller a mettre en cache le menu de navigation, les widgets ou autre module / bout de code qui demande des ressources SQL…

Pour avoir testé cette fonctionnalité sur un site a fort trafic, le gain sur le serveur SQL est vraiment appréciable (une 20aines de requetes SQL économisées par secondes…)


Sur le même sujet


Il y a 0 Commentaire

Laisser un commentaire