ホームページ >CMS チュートリアル >&#&プレス >メモリ キャッシュを使用して WordPress 記事閲覧統計の効率を最適化する

メモリ キャッシュを使用して WordPress 記事閲覧統計の効率を最適化する

藏色散人
藏色散人転載
2019-09-24 10:05:302810ブラウズ

Memcached メモリ キャッシュは WordPress の多くの機能を最適化し、WordPress を高速化できます。次のコラム WordPress チュートリアル では、Memcached を使用して WordPress を徹底的に最適化する方法を紹介します。

メモリ キャッシュを使用して 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 サイトの他の関連記事を参照してください。

声明:
この記事はwpjam.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。