2024年7月16日,WordPress 6.6 “Dorsey” 正式发布。本次更新带来了显著的性能提升,特别是在编辑器方面。模板加载速度提升了超过35%,所有区块编辑器的改进都被详细记录下来。本文将总结从 WordPress 6.5.5 到 6.6 之间的性能变化,并详细介绍主要的性能改进。
性能分析
区块主题(测试主题为 Twenty Twenty-Four)在性能上有轻微改变。中位数最大内容绘制时间(LCP)减少了7毫秒(约5%),而中位数首次字节时间(TTFB)减少了10毫秒(约14%)。虽然新功能通常会带来一些开销,这些数据表明未来仍有改进空间。
经典主题(测试主题为 Twenty Twenty-One)显示出很小的性能回落。中位数最大内容绘制时间(LCP)增加了1毫秒(约1%),而中位数首次字节时间(TTFB)增加了1.2毫秒(约3%)。
主要改进
优化 get_transient 函数中的短期和超时选项
- 在没有持久缓存的站点上,临时缓存存储在两个选项中,一个包含缓存本身,另一个包含超时。通过 #61993,查询过期缓存的数据库请求从两个减少到一个。这对于运行大量使用缓存插件的站点可能带来显著影响。
移除过时的 polyfills 依赖
- 在 #60962 中,过时的 polyfills(如 wp-polyfill、wp-polyfill-inert 和 regenerator-runtime)从 WordPress 的 React 脚本依赖中移除。这些脚本在现代浏览器中已不再需要,使用 React 前端的站点可能会因此获得适度的性能提升。
禁用大型选项的自动加载
- 在 #42441 中,对选项的自动加载进行了更细粒度的控制。当添加选项而未设置自动加载值时,WordPress 将自动跳过大型选项的自动加载。此更改旨在减少由大型自动加载选项引起的数据库响应缓慢问题。
在站点健康中新增“审核自动加载选项”部分
- #61276 在站点健康部分新增了一个测试,用于监控自动加载选项。显示自动加载选项的数量和大小,超过预定义阈值(默认800,000字节)将显示“严重”状态,表明潜在的性能问题。
持久缓存区块主题模式
- 在 [58025] 中,区块主题模式缓存更新为使用短期缓存,以便将这些模式缓存的性能优势扩展到没有运行外部对象缓存的站点。初步基准测试显示,消除每次请求加载所有 Twenty Twenty-Four 主题的区块模式成本,节省了约13%的总服务器响应时间。
引入 wp-on-async 指令作为高效指令
- 在 Gutenberg PR 61885 中,新增 wp-on-async 指令。这确保了当同一事件有多个指令时,它们不会累积成一个长任务。此指令在调用动作/回调前立即让出给主线程,更新 UI 后再运行处理代码。核心区块(如导航、查询分页和搜索)都已更新为使用新的异步回调。
启用文章嵌入的懒加载
- 在 #58773 中,通过在编辑器中粘贴 URL 将文章预览嵌入另一篇文章时,生成的 iframe 现在会自动懒加载,类似于其他嵌入的懒加载方式。
短期缓存优化
- 网络短期缓存通过单次调用进行预加载,get_site_transient 更新为一次预加载多个缓存。添加的 wp_prime_network_option_caches 函数,每次页面加载节省约 3 个数据库调用(多站点)。
性能测试方法
性能测试基于在 GitHub 动作运行器上使用自动化工作流进行的基准测试。测试了启用和禁用对象缓存(使用 memcached)的 Twenty Twenty-One 和 Twenty Twenty-Four 主题的主页,比较了 WordPress 6.6 和 WordPress 6.5.5(6.6 发布时的最新 6.5 版本)。
从 100 次运行中收集了核心 Web 指标(CWV)和性能实验室插件提供的服务器计时标头的性能指标,使用 WPP Research 存储库中的 CLI 脚本。