WordPress改进WP_Query性能,推荐安装memcached

张子凡 WordPress优化 2022-11-17 02:21:00 阅读(...) 评论(9)

WordPress 6.1 版本对 WP_Query 类中数据库查询执行方式的优化,改进数据库的查询缓存。简而言之就是如果 WordPress 多次运行同一个数据库查询,结果将从缓存中加载,但前提是服务器安装的缓存插件。对于那些使用持久对象缓存的人来说,这意味着在缓存失效之前数据库查询不会再次运行,从而导致对数据库的查询少得多。

wordpress

对于那些进行自定义开发的人,请确保您使用的是核心功能,例如 wp_insert_post 向数据库添加帖子。这些函数维护良好,通过使用它们,您可以确保缓存正确失效。如果您直接更新数据库,那么强烈建议您 clean_post_cache 在更新数据库行后调用该函数。

值得注意的是,默认情况下,所有对的调用都 WP_Query 将被缓存。可以通过简单地将 cache_results 参数传递为 来选择退出缓存查询 false。参见示例:

1
2
3
4
5
$args = array(
   'posts_per_page' => 50,
   'cache_results'  => false
);
$query = new WP_Query( $args );

也可以使用过滤器全局禁用缓存:

1
2
3
4
function disable_caching( $wp_query ) {
   $wp_query->query_vars['cache_results'] = false;
}
add_action( 'parse_query', 'disable_caching' );

像这样禁用缓存只应在极端情况下进行。clean_post_cache 为了获得最佳性能,强烈建议使用该函数 保持启用缓存并使缓存无效。

WordPress 6.1 引入了一个新功能,update_post_author_caches. 在 6.1 之前,具有多个作者的站点需要多个单一的数据库查询来获取作者信息,因为用户是作为循环的一部分加载的。update_post_author_caches 用户(作者)缓存现在不是一个一个地加载每个用户,而是通过在循环开始时 调用来在单个数据库调用中准备好,从而大大减少了数据库查询。

这个函数接受一个 post 对象数组,并将准备好用户缓存。update_post_author_caches 代码库的关键部分也添加了对的调用,以提高数据库性能。

WP_Query 是什么?

WP_Query 是一个 PHP 类,用于构造对 WordPress 数据库的查询并返回帖子、页面或其他自定义对象以在页面上呈现。它允许开发人员构建复杂的搜索,同时无需编写单独的 SQL 查询。

WP_Query 提供用于自定义循环的快捷方式和内置函数,循环是在给定页面上显示内容的过程。由于专注于 The Loop,WP_Query 是寻求自定义页面内容和外观的 WordPress 主题开发人员的首选。

为什么需要安装 memcached?

Memcached 是一个免费开源的、高性能的、具有分布式内存对象的缓存系统,它通过减轻数据库负载加速动态 Web 应用。

而 WordPress 想要使用 WP_Query 的高级缓存功能,服务器环境就需要配合安装 memcached 环境,并且还需要给对应的 PHP 安装 memcached 拓展,以及支持 memcached 的“object-cache.php”文件。

配置好 memcached 环境后,将 object-cache.php 文件(下载)放置到 WordPress 的“wp-content”目录中即可。

提示:切记在未安装好 memcached 环境后直接上传 object-cache.php 文件,否则会造成 WordPress 严重变慢的情况。

更多关于WordPress优化及疑问可以添加QQ群:255308000

除非注明,否则均为泪雪博客原创文章,禁止任何形式转载

本文链接:https://zhangzifan.com/wordpress-improvements-wp_query.html

留言评论

登录 后留言