更新(2023年8月8日):本文中的基准更新了6.3稳定版本的结果。
随着WordPress 6.3的推出,本文总结了此次发布的性能改进。While期间WordPress 6.2将标杆设得很高它显著提高了核心 核心是运行WordPress所需的一组软件。核心开发团队构建WordPress。WordPress 6.3已经超过了这些结果:基于执行的性能基准,WordPress 6.3加载速度提高27%块 块是一个抽象术语,用于描述使用WordPress编辑器组合在一起形成网页内容或布局的标记单元。这个想法结合了过去可能通过短代码、自定义HTML实现的概念,并将发现嵌入到单一一致的API和用户体验中。主题,经典主题速度提高18%,与WordPress 6.2相比,基于含量最高的油漆(LCP)公制。对于WordPress 6.2,这些改进分别达到18%和5%,因此可以公平地总结出WordPress6.3在性能方面是一项重大成就。
谢谢你@克拉克米利感谢合作撰写这篇文章!
是什么让6.3更快?
要分解6.3中的性能改进,了解不同的加载时间性能指标及其相互关系至关重要。最全面的衡量标准是含量最高的油漆(LCP)因为它捕获了总体加载时间性能。因此,在介绍这一职位时提到的百分比具体是衡量LCP改进的百分比。
LCP的一个重要部分是第一字节时间(TTFB)度量,它捕获服务器端加载时性能,从而直接影响LCP:实际上,TTFB是促成LCP结果的服务器端部分。对于客户端加载时性能,没有专用的独立度量。然而,由于客户端性能实际上是一切,因此可以得出结论,客户端加载时间性能可以用LCP和TTFB之间的差异来表示,即“LCP-TTFB”。
客户端性能
在WordPress 6.2中,性能提升的主要原因是服务器端性能(TTFB)的改进,如前所述6.2绩效改进岗位在WordPress 6.3中,这是不同的:大多数性能提升源于客户端性能改进(LCP-TTFB)。事实上,WordPress 6.3中块主题的客户端性能提高了40%,经典主题提高了31%与WordPress 6.2相比。作为参考,WordPress 6.2与6.1 LCP-TTFB相比,分别只提高了1.5%和2.5%。
绝大多数客户端性能改进都来自于优化emoji-loader.js
脚本,通过利用现代JavaScript脚本 JavaScript或JS是一种面向对象的计算机编程语言,常用于在web浏览器中创建交互效果。WordPress广泛使用JS以获得更好的用户体验。当PHP在服务器上执行时,JS在用户的浏览器中执行。https://www.javascript.com/.API,如Web Workers、,屏幕外画布
、和session存储
。除非您的WordPress站点禁用了相关的表情符号功能,否则您应该会注意到由于这一点而导致的性能改进增强 增强功能是对WordPress的简单改进,例如添加挂钩、新功能或对现有功能的改进。。请参阅#58472和[56074]有关此更改的其他上下文。
客户端性能改进的另一个显著部分源于对fetchpriority=“高”
属性。因此,这一改进仅适用于翻页上方带有图像的内容,但鉴于图像是目前为止网页上最常用的媒体,您很可能会注意到此增强功能也带来了性能改进。有关如何作为开发人员利用和修改新功能的全面概述,请参阅6.3关于图像性能改进的开发说明。有关更改的其他上下文,请参阅#58235和[56037].
下面的列表突出显示了一些可以在某些场景中提高客户端性能的附加票证,其中一些票证增强了是否添加加载=“惰性”
属性到图像:
最后但同样重要的是:这里应该强调的一个值得注意的开发人员特性是引入了脚本加载策略,它增加了对使用推迟
或异步
一般来说,这是性能的一个重要里程碑,但到目前为止,只有美国石油学会 API或应用程序编程接口是一种软件中介,允许程序相互交互并以有限的、明确定义的方式共享数据。它本身已经引入,这意味着它没有实际的性能影响然而,这就是为什么帖子中没有提前提到这一变化的原因。随着WordPress核心和生态系统开始采用API(例如。延迟块视图脚本和异步用于注释重铺),预计在未来,我们也将看到它显著的性能改进。请阅读6.3关于使用异步和延迟注册脚本的开发说明了解如何作为开发人员利用API以及与直接操作脚本的方法相比的优势标签 Subversion中的目录。WordPress使用标签来存储版本(3.6、3.6.1等)的单个快照,这是版本控制系统中标签的常见约定。(不要与帖子标签混淆。)。请参阅#12009和[56033]有关此更改的其他上下文。
服务器端性能
虽然6.3中的服务器端性能改进总体上没有带来太大的性能提升,但该版本仍然包括一些显著的增强,特别是对于块主题,其中服务器响应时间快19%。许多服务器端性能增强都是优化WordPress核心内部的低级逻辑的结果。虽然这使得这些改进很难单独描述,但这意味着它们不需要在WordPress生态系统中进行任何采用或修改即可生效。
块主题最显著的性能增强之一是一个低级更改,它优化了WordPress核心块样式的注册方式。这是相关的,因为核心块样式的处理方式与自定义块略有不同。然而,在6.3之前,所有块都使用相同的通用逻辑,其中包括相当多的灵活性,因此也会产生性能成本,这对于核心块来说是不必要的。此更改引入了一个专用函数,以更高效的方式注册核心块样式。请参阅#58528和[56044]有关此更改的更多上下文。
区块主题表演的另一个主要胜利是获取块模板()
功能。该函数中的逻辑经过优化,不再处理所有块模板,而只处理与当前查询匹配的块模板。请参阅#57756和[55687]有关此更改的更多上下文。
这个wp_common_block_scripts_and_styles()
函数是另一个优化的函数,当然值得强调。此增强功能仅与混合的主题,特别是经典主题add_theme_support(“wp-block-styles”)
但对于这些主题,它会大大提高服务器端性能。请参阅#58560和[56064]有关此更改的更多上下文。
对两个区块主题都有显著性能影响的最大变化和经典主题是wp_maybe_inline_styles()
函数,避免不必要地调用相对昂贵的函数来获取样式表文件的大小和内容。请参阅#58394和[55888]有关此更改的更多上下文。
以下列表突出显示了一些可以在某些情况下提高服务器端性能的附加票据:
数据库性能
WordPress 6.3对延迟加载元数据进行了一些增强,可以避免在某些情况下进行数据库查询。这些更改在6.3关于元数据API改进的开发说明帖子.查看个人门票#57227,#57645,#57901、和#58185了解更多上下文。
此外获取页面()
函数现在使用WP_查询
在内部,这不仅意味着消除重复代码,而且更重要的是,它可以提高函数的性能,因为它现在可以从相同的可靠缓存行为中受益,而这是以前函数的自定义实现中所缺少的。有关更多上下文,请参阅6.3关于获取页面()
功能和票 为bug报告和bug跟踪器上的功能开发创建。 #12821.
最后但同样重要的是WP_用户_查询
类现在支持缓存查询结果,成为WordPress支持它的最后一个核心查询类。这可以避免在查询用户信息时进行数据库查询。有关更多上下文,请参阅6.3开发说明WP_用户_查询
缓存和票#40613.
关于所用基准的说明
虽然本文中共享的指标基于执行的基准使用与WordPress 6.2相同的方法,任何基准测试都需要进行细微的解释:除了用于基准测试的WordPress网站是如何配置的之外,基准测试在很大程度上取决于它们运行的环境,一些不同的贡献者也根据稍早版本6.3RC1进行了基准测试并分享了它们的基准测试。本电子表格总结了所有基准测试结果。
可以注意到,其他一些基准并没有在突出显示的基准中看到如此高的改进(就上下文而言,这些基准是在作者的机器上运行的),但主要的收获是总体上有显著的性能提升。目前,有必要将重点放在性能基准上,并在本文中突出显示数字,以便与上述数字保持一致6.2绩效改进岗,因为它也使用相同的环境进行性能基准测试。对于任何其他贡献者的基准,其中相对改进没有作为很高,可以假设其环境中的6.2性能基准测试也会显示出相当低的性能提升。
虽然这意味着我们无法得到明确的答案速度快多少WordPress 6.3可以肯定地说,它比6.2快得多,相对而言,性能改进甚至高于6.2到6.1之间。
自动化基准测试工作流
参考的一些基准是使用新的可重用的自动基准测试工作流那个@瑞士风格最近实现,使用与手动基准相同的方法,但使用github GitHub是一个提供git存储库在线实现的网站,其他开发人员可以轻松共享、复制和修改这些存储库。公共存储库可以免费托管,私有存储库需要付费订阅。GitHub引入了“拉请求”的概念,在将贡献者在分支中所做的代码更改合并为存储库所有者之前,可以对其进行审查和讨论。https://github.com/行动。这些结果表明,由于使用了相同的环境,使用此工作流可以获得更一致的总体结果,并且还可以进一步减少执行性能基准测试所需的工作量。在未来,最好依赖工作流中的数字,而不是特定贡献者的任意环境中的数字。作为参考自动工作流编号大致说明WordPress 6.3与6.2相比的以下性能改进:
- 区块主题的LCP速度快10.6%,经典主题的速度快8.8%。
- 区块主题的TTFB速度快4.7%,经典主题快5.6%。
- 对于区块主题,LCP-TTFB速度快13.4%,对于经典主题,速度快9.3%。
参与进来
如果你有兴趣提高整个项目的绩效,请务必加入#核心编辑器,#核心绩效,并参加双方的会议。
道具到@亚当西尔弗斯坦,@安娜扎祖,@乔麦吉尔,@奥安德雷格尔,@spacedmonkey(空格键),@威斯顿鲁特用于审核和校对。
#6-3,#区块主题,#核心编辑器改进,#核心绩效,#性能