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插件:All in One WP Security & Firewall 怎么样(附:AIOWPS拦截垃圾评论设置教程) 2023-01-26 21:51:51
-
在 PHP 中如何通过一行代码就交换两个变量的值 2023-01-26 00:18:31
-
WordPress主题:Pin Premium (WordPress仿Pinterest样式瀑布流主题) 2023-01-25 23:36:43
-
免费WordPress主题:Maupassant(WordPress中文博客主题) 2023-01-25 23:31:29
-
WordPress响应式图片(Responsive Image)功能关闭:取消WordPress图片宽带和高度参数 2023-01-24 10:49:32
-
wordpress报错:修复MySQL 1064错误问题 错误原因和解决方法 2023-01-24 10:42:04
-
WP Rocket – 强大的WordPress缓存加速优化插件(附:WP Rocket插件设置过程与七折优惠码) 2023-01-24 00:41:44
-
WordPress 实现静态化搜索结果页面的方法 2023-01-24 00:41:44
-
get_permalink、get_the_permalink和the_permalink有啥区别? 2023-01-24 00:41:08
-
为什么选用WordPress搭建独立站? 2023-01-23 20:25:21