web-dev-qa-db-ja.com

W3 Total Cache APCキャッシングでトランジェントを使用する必要がありますか?

このようにクエリにトランジェントを使用する必要がありますか。

<?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(); ?> 

もしそうなら、私はまたデータベースキャッシングとAPCを有効にしてW3 Total Cacheを使うことができますか?

5
Ronin

Transient API はデータベース内にデータを保存します。これは APC ほど効果的ではありませんが、使用されているのと同様のワークフローです。トランジェントはAPCに使用できます。 APCが使用可能でアクティブであるかどうかをチェックすることが重要です。そのため、その機能は使用可能です。これは必ずしもそうとは限らないため、Transient APIを介してAPCに代わるものを追加し、それら2つのキャッシュオプションを1つのワークフローに組み合わせることを検討する必要があります。これは、APCが利用できない場合でも、利用可能なキャッシングメカニズムがあることを保証するでしょう - あなたの計画があなたのコードを配布し、キャッシングが異なる環境で働くことを確認したいならこれは良い習慣です。それがあなた自身の要件のためだけで、あなたがあなたのサーバー上のAPCが利用可能で活性化されている状態でセットアップをコントロールするならば、あなたはそれが働くであろうことを知っているのではるかに速いです。

以下のコードはAPCの使用例を示しています。

キャッシングの設定

set_transient( $transientname,$go,3600 );

apc_add( $transientname,$go,3600 );

削除にも

delete_transient( $transientname );

apc_delete( $transientname );

キャッシングクエリ

$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 -->";
}

APCドキュメンテーション

詳細および機能については、APCの 資料 を参照してください。

4
bueltge