web-dev-qa-db-fra.com

Devrais-je utiliser les transitoires avec la mise en cache APC W3 Total Cache?

Devrais-je utiliser les transitoires dans mes requêtes comme ceci?

<?php 
if ( ! $my_paged = absint( get_query_var( 'paged' ) ) )
$my_paged = 1;

if ( ! $my_query = get_transient( "567recent_$my_paged" ) ) {
    $my_query = new WP_Query ( "cat=2526&posts_per_page=1&paged=$my_paged" );
    set_transient( "567recent_$my_paged", $my_query, 60 * 60 );
}
while ($my_query->have_posts()) : $my_query->the_post(); ?> 

Si tel est le cas, pourrais-je également utiliser W3 Total Cache avec la mise en cache de la base de données et avec APC activé?

5
Ronin

L'API transitoire enregistre des données dans la base de données, ce qui n'est pas aussi efficace que APC , mais un flux de travail similaire à celui utilisé pour les transitoires peut être utilisé pour APC. Il est important de vérifier si APC est disponible et actif pour que ses fonctions soient utilisables. Comme ce n'est pas toujours le cas, il convient d'envisager l'ajout d'une alternative à APC via l'API transitoire et de combiner ces deux options de mise en cache dans un flux de travail. Ce qui garantirait qu’un mécanisme de mise en cache est disponible, même si APC n’est pas disponible - il est recommandé si votre planification planifie de distribuer votre code et veut s’assurer que la mise en cache fonctionne sur différents environnements. Si ce n'est que pour vos propres besoins et que vous avez le contrôle sur la configuration, avec APC sur votre serveur disponible et activé, vous pouvez alors utiliser uniquement la variante APC, car vous savez que cela fonctionnera et sera beaucoup plus rapide.

Le code ci-dessous montre l'utilisation exemplaire d'APC:

Définir la mise en cache

set_transient( $transientname,$go,3600 );

apc_add( $transientname,$go,3600 );

Aussi pour la suppression

delete_transient( $transientname );

apc_delete( $transientname );

Mise en cache des requêtes

$cachequery  = 'blog_id_' . $blog->ID;
$cacheexpire = 1800;

if ( $mypost = apc_fetch( $cachequery ) ) {
   echo "<!-- cached query -->";
} else {
   $mypost = query_posts( $args );
   apc_store( $cachequery, $mypost, $cacheexpire );
   echo "<!-- caching this -->";
}

Documentation APC

Voir la documentation de APC pour plus d'informations et de fonctions.

4
bueltge