Memcached メモリ キャッシュは WordPress の多くの機能を最適化し、WordPress を高速化できます。次のコラム WordPress チュートリアル では、Memcached を使用して WordPress を徹底的に最適化する方法を紹介します。
メモリ キャッシュを使用して、WordPress 記事閲覧統計の効率を最適化します。
WordPress のデフォルトのカスタム フィールド キャッシュ メソッド
一般記事閲覧統計プラグインは、カスタム フィールドを使用してデータを保存します。サーバーがオンになっている場合、Memcached メモリが使用されます。キャッシュ、カスタムフィールドのデータはどのようにキャッシュされますか? WordPress は、キャッシュ全体として $post_id をキャッシュキーとして使用し、「post_meta」をキャッシュグループとして使用します。
したがって、カスタム フィールドを更新することは、$post_id の下にあるすべてのカスタム フィールドのキャッシュをまとめて更新することと同じであり、記事が表示されるたびにカスタム フィールドのデータが 1 ずつ増加するため、毎回カスタム フィールドのキャッシュが更新されるため、ページごとにさらに 3 つの SQL クエリが発生します。
メモリ キャッシュを使用して記事閲覧統計の効率を最適化する
この問題を解決する方法はありますか?まず記事の閲覧統計をメモリにキャッシュし、毎回 10 件のビューを追加した後にデータベースに書き込むことで、WordPress 操作におけるカスタムフィールドの変更によって発生する SQL クエリの数を大幅に削減できます。
上記のコードを現在のテーマのfunctions.phpファイルにコピーします:
// 更新文章浏览数的时候,首先更新到内存中,然后每10次,才写到数据库中 add_filter('update_post_metadata', function($check, $post_id, $meta_key, $meta_value){ if($meta_key == 'views'){ if($meta_value % 10 != 0){ $check= true; wp_cache_set($post_id, $meta_value, 'views'); }else{ wp_cache_delete($post_id, 'views'); } } return $check; }, 1, 4); // 获取文章浏览数的时候,首先从内存中获取,没有才从数据库中获取 add_filter('get_post_metadata', function($pre, $post_id, $meta_key){ if($meta_key == 'views'){ $views= wp_cache_get($post_id, 'views'); if($views !== false){ return [$views]; } } return $pre; }, 1, 3);
小さな問題が発生する可能性もあります: Memcachedのキャッシュは永続的ではないため、誤ってメモリをキャッシュした場合クリアすると記事ビュー数の一部が失われますが、確実に10未満になります。
WPJAM Basic プラグインには Memcached が統合されています。WPJAM Basic をダウンロードした後、wpjam-basic/template/ ディレクトリにある object-cache.php ファイルを wp-content ディレクトリにコピーします。
以上がメモリ キャッシュを使用して WordPress 記事閲覧統計の効率を最適化するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。