WordPress数据库优化从此再见!(WordPress官方集成WP_Query的SQL 查询缓存)
为什么要和WordPress数据库优化说再见
WordPress因为本身是一款为博客设计的程序,在文章数量增多以后,数据库体积会指数级直线扩大。这时如果你依然要求你的网站有十分优秀的打开速度和访问体验,那肯定就离不了用Redis或Memcached 来对高频的数据库查询做一下缓存。
然而WordPress 在6.1 的版本更新中,改进了 WP_Query 类中数据库查询的执行方式,实现 SQL 查询缓存,如果多次运行同一条 SQL 查询,查询结果将从缓存中加载。这意味着对于使用持久对象缓存服务(比如 Memcached)的站点来说,在缓存失效之前,相同的数据库查询就不会再次运行。
这次从而显著降低站点的数据库查询次数,从而真正实现了站点的 0SQL。看来在6.1版本以后,WordPress官方已经集成了WP_Query的SQL 查询数据缓存,我们可以彻底和WordPress数据库优化的那些插件说再见了!
如何禁用WP_Query缓存
值得注意的是,在默认情况下,WP_Query
的所有数据库查询都将被缓存,如果想不缓存,只需在传入WP_Query参数数组的时候,将 cache_results
参数设置为 false
即可:
$query = new WP_Query(array(
'posts_per_page' => 50,
'cache_results' => false
));
也可以通过 filter 全局禁用缓存:
add_action('parse_query', function($wp_query){
$wp_query->query_vars['cache_results'] = false;
});
为了获得最佳性能,UTHEME强烈建议您保持WP_Query缓存开启,如果清理缓存使用 clean_post_cache
函数,非一些极端情况下不要禁用WP_Query缓存。
缓存 key 规则
缓存的键是使用 WP_Query
的查询参数生成的,但是会忽略以下参数:
suppress_filters
cache_results
fields
update_post_meta_cache
update_post_term_cache
update_menu_item_cache
lazy_load_term_meta
因为这些忽略的参数不会影响生成的 SQL 语句,其中特别要注意下 fields
参数:
$query2 = new WP_Query(array(
'posts_per_page' => 50,
'fields' => 'ids'
));
$query3 = new WP_Query(array(
'posts_per_page' => 50,
'fields' => 'all'
));
上面这两种情况,无论是否使用了 fields
参数或者什么参数,生成的 SQL语句都是一样的,然后查询结果都会被缓存起来,这样就能够更加高效的使用缓存,而无需存储多份缓存数据。
相信WordPress6.1版本正式发售以后,WordPress的主题、插件开发作者都会及时跟进,第一时间集成WP_Query的SQL 查询缓存功能。让大家卸载那些WordPress数据库优化插件。

-
搭建一个WordPress网站需要多少成本 2023-11-06 00:09:51
-
Symlink介绍(附:如何使用Symlink进行WordPress开发) 2023-11-05 23:38:32
-
让WordPress实现数据库同步的插件:HyperDB 2023-10-24 23:40:49
-
allegro电商平台值得做吗(附:2023年Allegro注册流程指南) 2023-10-08 21:53:39
-
印度跨境电商平台有哪些(附:印度跨境电商做什么产品好) 2023-10-08 21:34:23
-
跨境电商必看的几大海外二手电商平台 2023-10-08 18:04:42
-
WordPress同城互联网产品解决方案:UBASE 2023-10-03 16:40:39
-
WordPress网站的安全插件:wordfence 2023-09-14 09:25:18
-
WordPress 6.3 支持在手动更新插件和主题失败后回滚旧版本 2023-08-28 16:58:45
-
WordPress 6.3版本(2023年8月)性能提升了哪些? 2023-08-28 16:56:02