WordPress 6.1 引入了许多重要的性能改进,这些改进将对各个方面产生影响。最显着的改进是在缓存WP_Query
和REST API方面完成的。
对 WP_Query 的改进
缓存 WP_Query 中的数据库查询是许多开发人员一直想要的功能,最终在 WordPress 6.1 中实现了梦想。一些新功能将确保用户缓存和链接对象的菜单项现在已准备好,而get_page_by_title
功能将从现在开始使用WP_Query
并充分利用所有这些改进。
对 REST API 的改进
在单个查询中启动缓存将通过几个新的辅助函数显着改进 Posts 控制器,但这还不是全部。用户和评论控制器将以类似的方式受益,而分类和帖子类型控制器现在prepare_links
仅在需要时使用。这种对prepare_links
方法的控制也可用于自定义控制器。
站点运行状况改进
WordPress 6.1 将有两个新的站点健康检查——持久对象缓存和页面缓存,以及一些新的过滤器。在专门的开发说明中了解更多信息。
多站点改进
在 WordPress 6.1 中,网络选项功能已更新为与其他元数据类型保持一致,register_meta
添加了对单个查询中的主要缓存网络选项、网络选项中的字符串主站点 ID 等的支持。
引导/加载
为了更好地控制缓存行为、预加载资产和有条件地执行重定向,动作钩子的顺序略有改变。
缓存API的改进
缓存 API 的改进带来了在WP_Object_Cache
方法中验证缓存键、按组删除缓存并使许多私有缓存启动功能公开,因此可用于插件和主题。
有效的缓存键必须是整数或非空字符串。这将防止函数中的静默失败wp_cache_*()
,通过快速类型检查并_doing_it_wrong()
在字符串为空、false
或时添加消息来完成null
。此外,签入update_user_caches()
并 clean_user_cache()
确保电子邮件在缓存或从缓存中删除之前不为空。在#56198中阅读更多内容。
各种对象类型的几个私有缓存启动函数现在是公共的,鼓励插件和主题作者使用这些函数通过减少数据库查询的数量来提高他们的代码性能。这些功能是:
_prime_post_caches()
_prime_term_caches()
_prime_comment_caches()
_prime_network_caches()
_prime_site_caches()
_get_non_cached_ids()
<strong>wp_cache_flush_group()</strong>
功能介绍
如果你想删除缓存的项目,wp_cache_delete
你必须指定项目的 ID,或者你必须用 . 刷新整个缓存wp_cache_flush
。WordPress 6.1 引入了一个新的可插入函数 wp_cache_flush_group
,如果对象缓存实现支持它,它会删除组中的所有缓存项。
<strong>wp_cache_supports()</strong>
功能介绍
开发人员现在可以检测他们当前的对象缓存实现是否支持按组刷新, wp_cache_supports( $feature )
如果支持该功能,则调用 which 返回 true。第三方对象缓存插件可以声明一个 wp_cache_supports()
函数并正确列出其支持的特性:
add_multiple
set_multiple
get_multiple
delete_multiple
flush_runtime
flush_group
注意:该 wp_cache_supports()
功能替换并取代 #4476wp_cache_supports_group_flush()
中添加的功能。
在#56605中阅读更多内容。
媒体改进
WordPress 6.1 将添加decoding="async"
图像属性以及新wp_img_tag_add_decoding_attr()
功能和wp_img_tag_add_decoding_attr
过滤器。在#53232中阅读更多内容。
查询附件 AJAX 端点现在缓存父帖子对象。在#56037中阅读更多内容。
WP_Media_List_Table
类将调用update_post_parent_caches
函数以便在单个数据库请求中初始化父缓存。在#56036中阅读更多内容。
添加缓存以 wp_count_attachments()
更好地与 wp_count_posts()
. 在#55227中阅读更多内容。
检索空帖子集合时避免重复查询。在#55677中阅读更多内容。
帖子、帖子类型改进
在 WordPress 6.1中,WP_Posts_List_Table
类将调用update_post_author_caches
函数,以便在单个数据库请求中初始化帖子作者缓存。在#56100中阅读更多内容。
一个新的过滤器post_class_taxonomies
将允许开发人员减少生成类术语类的分类法的数量。在#37114中阅读更多内容。
运行持久对象缓存的站点将在 _find_post_by_old_slug
和 _find_post_by_old_date
函数中缓存数据库查询的结果。在#36723中阅读更多内容。
编辑
额外的构建任务copy:block-json
会将所有block.json
文件转换并存储在一个文件中,blocks-json.php
这将防止所有这些在每个页面加载的每个块中发生。
持有这些更改的跟踪票:
数据库
标识符(例如表和字段名称)使用 %i
占位符进行转义,这将防止 SQL 注入漏洞并提供小的性能改进。
持有这些更改的跟踪票:
其他性能改进
行政
WP_List_Table::get_column_info()
通过将主列添加到缓存的标头值来提高性能 。
定时 API
在 6.1 中,wp-cron 对于 LiteSpeed LSAPI将是非阻塞的。
分类
在取消注册分类法和调整以处理自定义分类法的默认术语时保留默认术语选项(#54472)。
主题
两个新的操作是包装加载模板文件的过程 ( load_template
) –wp_before_load_template
和wp_after_load_template
。
脚本加载器
新过滤器支持使用wp_preload_resources
进行资源预加载。rel='preload'
用户
WP_User_Query 中的主要用户元数据。