当前位置: 首页 > news >正文

易服客工作室:WordPress 6.3性能改进

随着WordPress 6.3发布,本文总结了该版本的性能改进。虽然WordPress 6.2显著提高了Core的加载时间性能,树立了很高的标准,但WordPress 6.3性能改进已经超越了这些结果:根据进行的性能基准测试,与WordPress 6.2相比,基于最大内容绘制 (LCP)指标,WordPress 6.3块主题的加载速度提高了27%,经典主题的加载速度提高了18%主题。对于 WordPress 6.2,这些改进分别达到18%和5%,因此可以公平地总结WordPress 6.3在性能方面是一项重大成就。

要分解 6.3 中的性能改进,了解不同的加载时间性能指标以及它们之间的关系至关重要。最全面的指标是最大内容绘制 (LCP),因为它捕获总体加载时间性能。因此,本文引言中提到的百分比是专门测量的 LCP 改进。

LCP 的一个重要部分是首字节时间 (TTFB)指标,它捕获服务器端加载时间性能,从而直接影响 LCP:实际上,TTFB 是对 LCP 结果做出贡献的服务器端部分。对于客户端加载时间性能,没有专用的独立指标。然而,由于客户端性能实际上就是其他一切,因此可以得出结论,客户端加载时间性能可以通过 LCP 和 TTFB 之间的差异来表示,即“LCP-TTFB”。

网址: WordPress 6.3性能改进 - 易服客工作室

目录   

客户端性能

服务器端性能

数据库性能

关于所使用的基准的说明

自动化基准测试工作流程

客户端性能

在 WordPress 6.2 中,大部分性能提升来自服务器端性能 (TTFB) 的改进,如前面提到的6.2 性能改进帖子中所强调的那样。在 WordPress 6.3 中,情况有所不同:大部分性能提升源于客户端性能改进 (LCP-TTFB)。事实上,与 WordPress 6.2 相比,WordPress 6.3 中的客户端性能对于块主题快了 40%,对于经典主题快了 31% 。作为参考,WordPress 6.2 与 6.1 LCP-TTFB 的比较分别仅提高了 1.5% 和 2.5%。

绝大多数客户端性能改进来自于emoji-loader.js通过利用现代JavaScript API(例如 Web Workers、OffscreenCanvassessionStorage. 除非您的 WordPress 网站禁用了相关的表情符号功能,否则您应该会注意到由于此增强而带来的性能改进。

客户端性能改进的另一个显着部分源于添加对fetchpriority="high"图像属性的支持。因此,此改进仅与首屏上带有图像的内容相关,但鉴于图像是迄今为止网页上最常用的媒体,您很可能也会注意到此增强功能带来的性能改进。有关如何作为开发人员利用和修改新功能的全面概述,请参阅有关图像性能改进的 6.3 开发说明。有关更改的其他上下文,请参阅#58235

最后但并非最不重要的一点:这里应该强调的一个值得注意的开发人员功能是引入脚本加载策略,它增加了对使用defer或加载脚本的支持async。总的来说,这是性能的一个重要里程碑,但是到目前为止,仅引入了API本身,这意味着它尚未对性能产生实际影响,这就是为什么本文前面没有提到这一更改的原因随着 WordPress 核心和生态系统开始采用 API(例如,延迟块视图脚本和异步评论回复),预计将来我们也将看到它的显着性能改进。请阅读6.3 有关使用 async 和 defer 注册脚本的开发说明,了解有关如何作为开发人员利用 API 以及相对于直接操作脚本标记的方法的优势的更多信息。有关此更改的更多背景信息,请参阅#12009

服务器端性能

虽然 6.3 中的服务器端性能改进总体上并没有带来那么多的性能提升,但该版本仍然包含一些显着的增强功能,特别是对于块主题,其中服务器响应时间加快了 19%。许多服务器端性能增强都是优化 WordPress 核心内部低级逻辑的结果。虽然这使得这些改​​进很难单独描述,但这意味着它们不需要在 WordPress 生态系统中进行任何采用或修改即可生效。

块主题最显着的性能增强之一是低级更改,它优化了 WordPress 核心块样式的注册方式。这是相关的,因为核心块样式的处理方式与自定义块的处理方式略有不同。然而,在 6.3 之前,所有块都使用相同的通用逻辑,其中包括相当多的灵活性,因此也有性能成本,这对于核心块来说是不必要的。这一变化引入了一个专用函数来以更有效的方式注册核心块样式。

块主题性能的另一个重大胜利是功能的改进get_block_templates()。该函数中的逻辑经过优化,不再处理所有块模板,而仅处理那些与当前查询匹配的块模板。

对块主题经典主题具有显着性能影响的最大变化是函数中的性能优化wp_maybe_inline_styles(),避免不必要地调用相对昂贵的函数来获取样式表文件的大小和内容。

数据库性能

WordPress 6.3 对延迟加载元数据进行了多项增强,可以避免某些情况下的数据库查询。

关于所使用的基准的说明

虽然本文中共享的指标基于使用 WordPress 6.2 所用相同方法进行的基准测试,但任何基准测试都需要进行细微差别的解释:除了用于基准测试的 WordPress 网站的配置方式之外,基准测试在很大程度上取决于为了获得额外的参考点,一些不同的贡献者还基于该版本的稍早版本 6.3 RC1 进行并分享了他们的基准测试。所有基准测试结果均汇总在此电子表格中。

可以注意到,其他一些基准测试并没有看到突出显示的基准测试中注意到的那么高的改进(就上下文而言,这些基准测试是在作者的机器上运行的),但主要的结论是整体性能显着提升。目前,将重点放在性能基准上并使用本文中突出显示的数字是有意义的,以便与上述6.2 性能改进帖子中的数字保持一致,因为性能基准也使用相同的环境。对于相对改进不那么高的任何其他贡献者的基准测试,可以假设其环境中的 6.2 性能基准测试也会显示出同等较低的性能提升。

虽然这意味着我们无法得到 WordPress 6.3 到底快了多少的明确答案,但可以肯定地说,它比 6.2 快很多,而且相对而言,性能提升甚至比 6.2 和 6.1 之间还要高。

自动化基准测试工作流程

引用的一些基准测试是使用@swissspidy最近实施的新的可重用自动化基准测试工作流程进行的,使用与手动基准测试相同的方法,但使用GitHub Actions。这些结果表明,由于使用相同的环境,使用此工作流程总体上可以获得更一致的结果,并且还减少了进行性能基准测试所需的工作量。将来,依赖该工作流程中的数字而不是来自特定贡献者的任意环境的数字可能是一个好主意。作为参考,自动化工作流程数字大致表明了 WordPress 6.3 与 6.2 相比的以下性能改进:

  • LCP 对于块主题快 10.6%,对于经典主题快 8.8%。
  • TTFB 对于块主题快 4.7%,对于经典主题快 5.6%。
  • LCP-TTFB 对于块主题快 13.4%,对于经典主题快 9.3%。

相关文章:

易服客工作室:WordPress 6.3性能改进

随着WordPress 6.3发布,本文总结了该版本的性能改进。虽然WordPress 6.2显著提高了Core的加载时间性能,树立了很高的标准,但WordPress 6.3性能改进已经超越了这些结果:根据进行的性能基准测试,与WordPress 6.2相比&…...

LeetCode 周赛上分之旅 #39 结合中心扩展的单调栈贪心问题

⭐️ 本文已收录到 AndroidFamily,技术和职场问题,请关注公众号 [彭旭锐] 和 BaguTree Pro 知识星球提问。 学习数据结构与算法的关键在于掌握问题背后的算法思维框架,你的思考越抽象,它能覆盖的问题域就越广,理解难度…...

山东布谷科技直播软件开发WebRTC技术:建立实时通信优质平台

在数字化的时代,实时通信成为了人们远程交流的主要方式,目前市场上也出现了很多带有实时通信交流的软件,实时通信符合人们现在的需求,所以在直播软件开发过程中,开发者也运用了实时通信技术为直播软件加入了实时通信的…...

Golang-语言源码级调试器 Delve

前言 Go 目前的调试器有如下几种: GDB 最早期的调试工具,现在用的很少。LLDB macOS 系统推荐的标准调试工具,单 Go 的一些专有特性支持的比较少。Delve 专门为 Go 语言打造的调试工具,使用最为广泛。 本篇简单说明如何使用 Del…...

构建Docker容器监控系统(Cadvisor +InfluxDB+Grafana)

目录 案例概述 Cadvisor InfluxDBGrafana 1.1、 Cadvisor 1.2、InfluxDB 1.3、Grafana 1.4、监控组件架构 1.5、开始部署 安装docker-ce 阿里云镜像加速器 创建自定义网络 创建influxdb容器 案例概述 Docker作为目前十分出色的容器管理技术,得到大量企业…...

【Vue3】keep-alive 缓存组件

当在 Vue.js 中使用 <keep-alive> 组件时&#xff0c;它将会缓存动态组件&#xff0c;而不是每次渲染都销毁和重新创建它们。这对于需要在组件间快速切换并且保持组件状态的情况非常有用。 <keep-alive> 只能包含&#xff08;或者说只能渲染&#xff09;一个子组件…...

24成都信息工程大学809软件工程考研

1.渐增式与非渐增式各有何优、缺点&#xff1f;为什么通常采用渐增式&#xff1f; 非渐增式是将所有的模块一次连接起来&#xff0c;简单、易行、节省机时&#xff0c;但测试过程难于排错&#xff0c;发现错误也很难定位&#xff0c;测试效率低&#xff1b;渐增式是将模块一个…...

Filament for Android 编译搭建(基于Ubuntu20.04系统)

一、Filament 源代码下载 github下载地址&#xff1a; 2、安装clang 我是直接安装clang-10 Ubuntu 20.04 &#xff0c;sudo apt install clang 命令默认就是clang-10 $sudo apt-get install clang-10 # 安装 AST.h 等头文件 $sudo apt-get install libclang-10-dev $sudo …...

【MySQL--->数据库操作】

文章目录 [TOC](文章目录) 一、操作语句1.增2.删3.改4.查5.备份 二、字符集与校验规则 一、操作语句 1.增 语句格式:create database [if no exists]数据库名[create_specification [,create_specification] …]; 中括号内是可选项,if no exists是指如果数据库不存在就创建,存…...

PhotoShop2023 Beta AI版安装教程

从 Photoshop 开始&#xff0c;惊艳随之而来​ 从社交媒体贴子到修饰相片&#xff0c;设计横幅到精美网站&#xff0c;日常影像编辑到重新创造 – 无论什么创作&#xff0c;Photoshop 都可以让它变得更好。​ Photoshop2023 Beta版本安装教程和软件下载 地址&#xff1a;点击…...

并发冲突导致流量放大的线上问题解决

事故现象 生产环境&#xff0c;转账相关请求失败量暴增。 直接原因 现网多个重试请求同时到达 svr&#xff0c;导致内存数据库大量返回时间戳冲突。业务方收到时间戳冲突&#xff0c;自动进行业务重试&#xff0c;服务内部也存在重试&#xff0c;导致流量放大。 转账 首先…...

Spring Cloud Gateway过滤器GlobalFilter详解

一、过滤器的场景 在springCloud架构中&#xff0c;网关是必不可少的组件&#xff0c;它用于服务路由的转发。对客户端进行屏蔽微服务的具体细节&#xff0c;客户端只需要和网关进行交互。所以网关顾名思义&#xff0c;就是网络的一个关卡。它就是一座城的城门守卫。所以这个守…...

【LeetCode】1281.整数的各位积和之差

题目 给你一个整数 n&#xff0c;请你帮忙计算并返回该整数「各位数字之积」与「各位数字之和」的差。 示例 1&#xff1a; 输入&#xff1a;n 234 输出&#xff1a;15 解释&#xff1a; 各位数之积 2 * 3 * 4 24 各位数之和 2 3 4 9 结果 24 - 9 15示例 2&…...

22、springboot的Profile(通过yml配置文件配置 profile,快速切换项目的开发环境)

springboot的Profile ★ 何谓Profile 应用所在的运行环境发生切换时&#xff0c;配置文件常常就需要随之修改。Profile&#xff1a;——就是一组配置文件及组件的集合。可以整个应用在不同的profile之间切换&#xff08;设置活动profile&#xff09;&#xff0c;整个应用都将使…...

2023-08-12力扣每日一题-暴力hard

链接&#xff1a; 23. 合并 K 个升序链表 题意&#xff1a; 如题 解&#xff1a; 时间668ms击败 5.00%使用 C 的用户/内存12.37mb击败 87.96%使用 C 的用户 循环选择插入新链表的节点&#xff0c;纯正的暴力&#xff0c;不过空间用得少 最坏应该是1E4*1E4&#xff0c;没…...

Mac安装nvm教程及使用

nvm 是 node 版本管理器&#xff0c;也就是说一个 nvm 可以管理多个 node 版本&#xff08;包含 npm 与 npx&#xff09;&#xff0c;可以方便快捷的安装、切换 不同版本的 node。 1、直接通过brew安装 执行命令&#xff1a;brew install nvm PS&#xff1a; 如果没有安装br…...

左值引用和右值引用

目录 辨析引用和指针 代码段 定义引用变量的技巧 同一内存 指针和引用的简单运用 辨析两类指针 数组、指针、引用 辨析左值引用和右值引用 代码段 左值引用和右值引用 辨析引用和指针 1、引用是一种更安全的指针 说明&#xff1a;引用必须初始化&#xff0c;而指针可…...

JavaWeb 中对 HTTP 协议的学习

HTTP1 Web概述1.1 Web和JavaWeb的概念1.2 JavaWeb技术栈1.2.1 B/S架构1.2.2 静态资源1.2.3 动态资源1.2.4 数据库1.2.5 HTTP协议1.2.6 Web服务器 1.3 Web核心 2 HTTP2.1 简介2.2 请求数据格式2.2.1 格式介绍2.2.2 实例演示 2.3 响应数据格式2.3.1 格式介绍2.3.2 响应状态码2.3.…...

06-hadoop集群搭建(root用户)

搭建Hadoop集群流程 环境准备 1、基础环境的搭建&#xff08;内网封火墙关闭、主机名、规划好静态ip、hosts映射、时间同步ntp、jdk、ssh免密等&#xff09; 2、Hadoop源码编译&#xff08;为了适应不同操作系统间适配本地库、本地环境等&#xff09; 3、Hadoop配置文件的修…...

MySQL 窗口函数是什么,有这么好用

先看这段像天书一样的 SQL ,看着就头疼。 SELECTs1.name,s1.subject,s1.score,sub.avg_score AS average_score_per_subject,(SELECT COUNT(DISTINCT s2.score) 1 FROM scores s2 WHERE s2.score > s1.score) AS score_rank FROM scores s1 JOIN (SELECT subject, AVG(sco…...

从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路

进入2025年以来&#xff0c;尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断&#xff0c;但全球市场热度依然高涨&#xff0c;入局者持续增加。 以国内市场为例&#xff0c;天眼查专业版数据显示&#xff0c;截至5月底&#xff0c;我国现存在业、存续状态的机器人相关企…...

STM32标准库-DMA直接存储器存取

文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA&#xff08;Direct Memory Access&#xff09;直接存储器存取 DMA可以提供外设…...

【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表

1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...

[10-3]软件I2C读写MPU6050 江协科技学习笔记(16个知识点)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战

“&#x1f916;手搓TuyaAI语音指令 &#x1f60d;秒变表情包大师&#xff0c;让萌系Otto机器人&#x1f525;玩出智能新花样&#xff01;开整&#xff01;” &#x1f916; Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制&#xff08;TuyaAI…...

均衡后的SNRSINR

本文主要摘自参考文献中的前两篇&#xff0c;相关文献中经常会出现MIMO检测后的SINR不过一直没有找到相关数学推到过程&#xff0c;其中文献[1]中给出了相关原理在此仅做记录。 1. 系统模型 复信道模型 n t n_t nt​ 根发送天线&#xff0c; n r n_r nr​ 根接收天线的 MIMO 系…...

Java数值运算常见陷阱与规避方法

整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...

android RelativeLayout布局

<?xml version"1.0" encoding"utf-8"?> <RelativeLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_height"match_parent"android:gravity&…...

【前端异常】JavaScript错误处理:分析 Uncaught (in promise) error

在前端开发中&#xff0c;JavaScript 异常是不可避免的。随着现代前端应用越来越多地使用异步操作&#xff08;如 Promise、async/await 等&#xff09;&#xff0c;开发者常常会遇到 Uncaught (in promise) error 错误。这个错误是由于未正确处理 Promise 的拒绝&#xff08;r…...

spring Security对RBAC及其ABAC的支持使用

RBAC (基于角色的访问控制) RBAC (Role-Based Access Control) 是 Spring Security 中最常用的权限模型&#xff0c;它将权限分配给角色&#xff0c;再将角色分配给用户。 RBAC 核心实现 1. 数据库设计 users roles permissions ------- ------…...