使WordPress成为核心

开的12个月前

关闭7个月前

上次修改时间7个月前

#59532 关闭 缺陷(bug) (固定的)

避免在前端注册区块模式

报告人: 亚里士多德的侧面 亚里士多德 所有者: thekt12的个人资料 第12章
里程碑: 6.5 优先: 正常的
严重程度: 正常的 版本: 6.4
组件: 编辑器 关键词: has-patch接口 has-unit-测试
重点: 性能 复写的副本:

描述

从主题注册块模式是一个昂贵的过程,尤其是当主题包含许多模式(如默认的二十四个主题)时。

前端请求不需要块模式,所以对于不需要它们的请求,我们可以跳过注册它们。

更改历史记录(34)

#2 @spacedmonkey(空格键)
12个月以前

  • 关键词 has-patch接口远离的

明确地说,您是在谈论文件内容的包含标记吗?如何从插件注册块模式?

#3 @亚里士多德
12个月以前

  • 关键词 has-patch接口补充

#4 @spacedmonkey(空格键)
12个月以前

从主题注册块模式是一个昂贵的过程-

@你能解释一下它的昂贵之处吗?存储一组数据相当便宜。对我来说,代价高昂的部分是输出缓冲,这是我们可以懒洋洋地做的。

#6 @spacedmonkey(空格键)
12个月以前

@亚里士多德,我已经把一个公关组合在一起,懒洋洋地加载块模式。

https://github.com/WordPress/WordPress-develop/pull/5398

顺便说一句,在前端使用了方块图案。我看到块模式正在TT4主题中使用。

@贵族对发表了评论PR#5397:


12个月以前
#7

收盘时有利于https://github.com/WordPress/WordPress-develop/pull/5398
延迟加载模式是更好的解决方案。

#9 @伯恩哈德·雷特
12个月以前

切向相关:#59541.

#10 @hellofrom托尼亚
11个月以前

  • 组件已从更改概述编辑器
  • 里程碑已从更改等待审查6.5

拉入6.5。

#11 @乔麦吉尔
9个月以前

考虑到模式可以在模板中引用,并且需要注册才能正确呈现,我们要么需要找到一种按需注册这些模式的方法(即延迟加载),而不是在每次请求时都加载它们,要么找到一种使注册过程更具性能的方法。

对于后者,改进块模式的缓存策略(相关#60120)应该会有所帮助,但如果能找到其他方法,在不持久缓存模式数据的情况下提高此过程的性能,那将是一个很好的探索。

这张票是在松弛(Slack)在kt12的核心表现中。查看日志.


9个月以前

这张票是在采购订单号5941WordPress/WordPress-develop开发通过@第12章.


8个月以前
#13

这只是对原始PR的增强-https://github.com/WordPress/WordPress-develop/pull/5398,以适应主干中的新变化。

其思想是仅在需要模式时加载模式文件的内容。

Trac票:https://core.trac.wordpress.org/ticket/59532

##绩效改进

我们确实看到了约5毫秒用于TT4。这种改进主要来自运行包括$files_path只有在我们需要内容的时候。我觉得这是我们目前能做的最好的事情,因为函数已经过优化,可以得到扩展,并且已经以JIT的方式解析了内容。

公制PR(平均值)TT4干线(平均)TT4
响应时间(中值)413.06418.38
wp负载分配查询(中位数)3.053.065
wp-前模板(中位数)190.84196.95

#14 @第12章
8个月以前

我研究过@spacedmonkey POV并改进了代码,以修复一些BC问题。

新公关适合审查https://github.com/WordPress/WordPress-develop/pull/5941

性能基准测试显示了TT4主题的持续改进。然而,TT3几乎没有变化。(检查PR的指标)

我也看到了通过持久缓存进一步提高性能的机会WP_Block_Patterns_Registry::prepare_content()

这两个都提到了WP_Block_Patterns_Registry::get_all_registered(WP_Block模式_注册)WP_Block_Patterns_Registry::get_registered(WP_Block模式_注册表).

下一步:

  • 使用分析器检查开销WP_Block_Patterns_Registry::prepare_content()它似乎有一些昂贵的操作,比如块解析。
  • 添加单元测试

这张票是在松弛(Slack)在kt12的核心表现中。查看日志.


8个月以前

#16 @口香糖27
8个月以前

  • 所有者设置为第12章
  • 状态已从更改新的分配

#17 @spacedmonkey(空格键)
8个月以前

@我建议使用本评论中突出显示的主题测试此补丁https://core.trac.wordpress.org/ticket/59490#评论:16他们有很多模式。这些主题很受欢迎,使用也很好。

@第12章对发表了评论采购订单号5941:


8个月以前
#18

我们尝试在缓存时获取值准备_内容值-https://github.com/10up/wordpress-develop/pull/82/files网站.

最初的结果显示缓存降低了结果的速度,但我觉得这是因为在大型数组上使用了序列化。

@乔麦吉尔对发表了评论PR#5398:


8个月以前
#19

收盘时有利于#5941谢谢你的良好开端!

这张票是在松弛(Slack)mukeshpanchal27的核心表现。查看日志.


8个月以前

@第12章对发表了评论采购订单号5941:


7个月以前
#21

@在你上次审查之后,我在这里做了一个轻微的代码重构。而不是从文件路径加载内容我已经介绍了获取内容,这将处理来自获取已注册获取所有已注册的

这张票是在松弛(Slack)乔麦吉尔的核心表现。查看日志.


7个月以前

#23 @乔麦吉尔
7个月以前

  • 分辨率设置为固定的
  • 状态已从更改分配关闭

57683:

编辑器:仅在使用时加载图案内容。

以前,当注册模式时,所有注册模式的内容都会在每个请求中加载。相反,这会在注册期间存储模式文件的路径,并在首次使用模式时读取内容,这是一种性能优化。

道具thekt12,spacedmonkey,gziolo,aristath,joemgill。
修复#59532.

@乔麦吉尔对发表了评论采购订单号5941:


7个月以前
#24

已在中合并https://core.trac.wordpress.org/changeset/57683谢谢@kt-12。如果您想添加其他测试,我们可以将其作为后续提交,但我认为没有必要,因为公共API没有更改,而现有测试涵盖了这些更改。

这张票是在产品编号6154WordPress/WordPress-develop开发通过@第12章.


7个月以前
#25

  • 关键词 has-unit-测试补充

Trac票:https://core.trac.wordpress.org/ticket/59532
添加了的单元测试#59532

@第12章对发表了评论采购订单号5941:


7个月以前
#26

@我添加了两个单元测试。由于mysql docker问题,无法提前测试。此外,我还必须打开一个

新的https://github.com/WordPress/WordPress-develop/pull/6154/files网站

@第12章对发表了评论采购订单号6154:


7个月以前
#27

@乔麦吉尔没有设置(_U)撕裂_向下每次测试后工作?目前,即使我没有在测试用例后重置值,它仍然有效(否则我的第二个测试用例将失败)

@kt12对发表了评论采购订单号6154:


7个月以前
#28

@乔麦吉尔没有设置(_U)撕裂_向下每次测试后工作?目前,即使我没有在测试用例后重置值,它仍然有效(否则我的第二个测试用例将失败)

#29 @乔麦吉尔
7个月以前

57703:

编者:改进块模式注册的PHPUnit测试。

这是对[57683],它增加了额外的单元测试覆盖范围,以确保块模式内容不会在注册期间从文件加载,而是在访问这些模式时加载。这也提高了设置(_up)撕裂_向下方法测试_块_wpBlockPattersRegistry测试类,以确保在每次测试后重置测试期间对注册块所做的任何修改。

道具12,乔麦吉尔。
请参阅#59532.

这张票是在松弛(Slack)乔麦吉尔的核心表现。查看日志.


7个月以前

#33 @乔麦吉尔
7个月以前

57731:

文档:改进的docblockWP_Block_Patterns_Registry::寄存器.

这记录了新的文件路径支持的属性WP_Block_Patterns_Registry::寄存器并将属性名称更新为驼峰大小写格式,以与其他块模式属性保持一致。

道具12,空格键,乔麦吉尔。
请参阅#59532.

注:请参阅TracTickets公司有关使用的帮助门票。