使用 WordPress Transients API 缓存查询结果节省 SQL 查询时间,提高 WordPress 性能
文 / @UTHEME
关于WordPress缓存数据
作为一名小本本,我非常喜欢使用WordPress来建立自己的博客。然而,在使用WordPress的过程中,我发现性能的瓶颈很多时候都在MySQL数据库查询上。如果能把查询数据缓存起来,对提高WordPress性能很有帮助。好在WordPress为我们提供了TransientsAPI供我们缓存数据。
如何使用WordPress缓存数据
根据服务器设置,TransientsAPI会把缓存数据存储到不同的位置。如果服务器上有Memcached之类的对象缓存插件,缓存数据就直接存储在内存中。如果没有缓存插件,缓存数据存储在WordPress的数据表中。以下代码演示了如何使用WordPress缓存数据:
//检查缓存是否已经存在
if(false===($portfolio_query=get_transient('saved_product_query'))){
//如果没有缓存,进行WordPress查
$portfolio_query=new WP_Query(array(
'post_type' => 'product',
'posts_per_page' => 10,
));
set_transient('saved_product_query',$portfolio_query,60*60*4);//设置缓存,时间为4个小时
}
//if(have_posts()){}...在这里输入查询结果
//更新时,删除缓存
function wpc_delete_its_transients(){
global $post;
if($post->post_type=='portfolio'){
delete_transient('saved_product_query');
}
}
add_action('save_post','wpc_delete_its_transients');
以上代码中,WordPress会先查询是否有缓存数据。如果有缓存数据,直接返回缓存的数据。如果没有,进行MySQL查询,设置缓存供下次使用,然后返回查询到的数据。
TransientsAPI的效果
在WordPress模板或插件中复杂查询比较多的时候,TransientsAPI的效果是很明显的。当然,如果你使用的有类似wpsupercache之类的插件,以上的代码就是多余的了。因为wpsupercache直接生成了静态数据,缓存效果比以上代码要好。

相关文章
-
WordPress网站的安全插件:wordfence 2023-09-14 09:25:18
-
创建Vue组件详细教程 2023-09-10 00:23:17
-
WordPress 6.3 支持在手动更新插件和主题失败后回滚旧版本 2023-08-28 16:58:45
-
WordPress 6.3版本(2023年8月)性能提升了哪些? 2023-08-28 16:56:02
-
Astra 主题团队推出人工智能驱动的 WordPress 网站创建平台 – ZIPWP 2023-08-28 16:49:54
-
WordPress 宣布将为用户提供 100 年域名托管服务 2023-08-28 16:45:27
-
PHP判断if else 和 switch case的区别盘点 2023-07-29 15:11:11
-
详解WordPress独立站SEM中的OCPC方法(含百度推广OCPC与谷歌OCPC) 2023-07-19 08:01:30
-
WordPress的古腾堡全站编辑器site-editor.php介绍(附:site-editor.php启用代码) 2023-07-16 08:01:57
-
WordPress的Customize Partial功能最全介绍(含:demo代码) 2023-07-16 00:21:56