运用内存缓存优化 WordPress 文章阅读统计效力。
WordPress 默许的自定义字段缓存体式格局
平常的文章阅读统计插件,都是运用自定义字段来存储数据的,假如服务器开启了 Memcached 内存缓存,自定义字段的数据是怎样被缓存呢?WordPress 会以 $post_id 做为 cache_key,'post_meta' 作为 cache_group 团体举行缓存。
所以更新某个自定义字段,相当于该 $post_id 下的一切自定义字段的缓存都一同更新,而每次文章阅读,这个自定义字段数据都邑加 1,如许,每次自定义字段的缓存都邑更新,然后就会形成每一个页面会多出三个 SQL 查询。
运用内存缓存优化文章阅读统计效力
有无方法处理这个题目呢?我们能够把文章的阅读统计先缓存到内存中,每次增添10次阅读才写入数据库中去,如许就能够大大下降 WordPress 操纵因为自定义字段变动而形成 SQL 查询次数。
将上面的代码复制到当前主题的 funtions.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 文章阅读统计效力的细致内容,更多请关注ki4网别的相干文章!