WordPress Rest API 性能大提升:WordPress 6.1版本将大幅改进REST API的性能
据WordPress官方2022年10月2日透露, WordPress6.1 版本将会对 REST API 进行了多项改进关键改进,以提高性能。这些改进减少了在每个 REST API 请求上运行的数据库查询的数量。
WordPress6.1版本将修改prepare_links
的运行场景
在 WordPress 6.1 之前,prepare_links
所有控制器都会调用 REST API 中的方法。如果将_fields
参数传递给 REST API 请求,则可能意味着未请求链接字段并且永远不会在响应中返回。这是一种浪费,因为prepare_links
它可能包含数据库调用或其他即使从未返回响应也会运行的复杂逻辑。
在WordPress 6.1更新后,prepare_links
仅会在响应中请求时调用,当在字段中请求链接或_embedded
传递参数时。作为这项工作的一部分,分类和文章类型控制器现已更新,以实现上述prepare_links
方法,使它们与其他 REST API 控制器保持一致。
以下是在自定义 REST API 控制器中实现此更改的代码示例。
更改之前
$response = rest_ensure_response( $data );
$links = $this->prepare_links( $post );
$response->add_links( $links );
return $response;
更改之后
$response = rest_ensure_response( $data );
if ( rest_is_field_included( '_links', $fields ) || rest_is_field_included( '_embedded', $fields ) ) {
$links = $this->prepare_links( $post );
$response->add_links( $links );
}
return $response;
此逻辑仅在_links
或_embedded
被请求时有条件地调用 prepare_links
。
有关更多信息,请参阅Trac 工单:#52992、#56019、#56020
WordPress6.1版本将修改Posts 控制器
在针对 REST API 请求的响应运行分析工具时,发现 post 控制器会向每个 post 请求大量链接数据。例如,在 REST API 响应中返回文章时,所有链接的数据,如作者(用户)、特色图像和父帖子都被请求。由于这些链接的项目没有在缓存中准备好,这可能意味着对于 REST API 响应中的每个帖子,将有 3 个单独的数据库查询:一个用于用户,一个用于特色图像,另一个用于父帖子。
在 WordPress 6.1 中,所有缓存都在单个数据库查询中启动,并且有新的辅助函数可以实现这一点:
update_post_author_caches
:在单个查询中获取一组帖子并准备用户缓存。
update_post_parent_caches
:在单个查询中获取一组帖子和父帖子。
update_menu_item_cache
:在单个查询获取一系列帖子并将帖子/术语链接到菜单项。
现有的update_post_thumbnail_cache
函数用于准备特色图像缓存。这些功能也正在推广到内核的其他部分,这些部分可以从在一个地方启动缓存中受益。
有关更多信息,请参阅 Trac 工单:#55592、#55593、#55620
对其他控制器的改进
评论和用户控制器也得到了改进:用户控制器现在在单个查询中启动用户元,评论控制器现在在单个查询中启动链接的帖子缓存。对搜索后控制器进行了改进,以提高数据库性能以及媒体控制器。

-
搭建一个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