1 前言

自网站诞生以来,页面白屏时间、用户交互的响应速度等一直都是开发者关心的问题,这直接影响了一个网站能否为用户的浏览提供舒适的服务,而这种舒适度,直接关系着对用户的吸引力,毕竟谁都不能忍受一个页面长达 10 秒的空白屏时间,更别说点击按钮后,页面长时间的毫无反应。

web 的性能一定程度上影响了用户留存率,Google DoubleClick 研究表明:如果一个移动端页面加载时长超过 3 秒,用户就会放弃浏览。BBC 发现网页加载时长每增 1 秒,用户就会流失 10%。在 2006 年,Amazon 曾做过一个报道,响应时间每提高 100ms,他们便会增加 1% 的收入。从中可以看出,页面性能的重要性,但是到底多快才是快呢。

Google 开发者提出了一种 RAIL 模型来衡量应用性能,这是一种以用户为中心的性能模型,它提供了一种考虑性能的结构。该模型将用户体验分解为关键操作(例如,点击、滚动、加载),并帮助您为每个操作定义性能目标。

2 RAIL 模型

RAIL 代表着 web 应用生命周期的四个不同方面,即:Response(响应)、Animation(动画)、Idle(空闲)、Load(加载)。

最好的性能指标是:100ms 内响应用户输入;动画或者滚动需在 10ms 内生成每一帧;最大化空闲时间;页面加载时长不超过 5 秒。

不同的用户对 RAIL 中的每一个都有不同的性能期望,因此性能指标是根据上下文和关于用户如何感知延迟的用户体验研究来定义的。

2.1 用户感知性能延迟的关键指标

用户对性能延迟的感知有所不同,具体取决于网络条件和硬件。例如,通过快速 Wi-Fi 连接,在功能强大的台式机上加载站点时,通常只需不到 1 秒时间,用户已经习以为常。通过速度较慢的 3G 网络连接,在移动设备上加载站点则需要更长的时间,因此,移动用户通常会更有耐心。在移动设备上,5 秒钟内完成加载是更现实的目标。

以上,我们了解了用户是如何感知性能延迟的,下面介绍关于 RAIL 模型中的关键性能指标。

2.2 Response:100 毫秒内响应用户交互

2.3 Animation:在 10 毫秒内生成一帧

2.4 Idle:最大限度利用空闲时间

2.5 Load:在 5 秒内交互内容并实现可交互

当页面加载缓慢时,用户注意力会分散,他们会认为任务已中断。加载速度快的网站具有更长的平均会话时间、更低的跳出率和更高的广告可见性。

根据用户的设备和网络能力优化相关的快速加载性能。目前,对于首次加载,在使用速度较慢 3G 连接的移动设备上,理想的目标是在 5 秒或更短的时间内实现可交互。

对于后续加载,理想的目标是在 2 秒内加载页面。

以上,提供了一种以用户为中心的性能模型,详细的将用户体验分解到了按键操作(例如点击、滚动、加载)中,为每个操作自定义性能目标。

接下来,我们看一下关于每一个 web 页面的核心指标。

3 核心 web 指标

2020 年 Google 定义的核心 Web 指标阈值,旨在为网络质量指标提供统一指导,这些指标对于提供出色的网络用户体验至关重要。

3.1 三大核心指标

3.2 其他指标

以上,我们完成了对用户性能体验指标、web 性能核心指标的介绍,那么你是否想再稍微深入的了解一下一个 web 页面从输入网址到可交互的过程呢。

4 web 加载全过程

从输入 url 到用户可以使用页面的全过程时间统计,会返回一个 PerformanceTiming 对象,单位均为毫秒

按触发顺序排列所有属性:

注意:开始页面请求

注意:这里握手结束,包括安全连接建立完成、SOCKS 授权通过

注意:只是 DOM 树解析完成,这时候并没有开始加载网页内的资源

5 各指标计算方式

6 总结

在优化网站性能时,我们发现这些标准有时会相互冲突。例如,一个阈值始终可实现和该阈值始终能提供良好的用户体验之间可能存在矛盾。此外,鉴于人类感知研究通常提供一个范围值,而用户行为指标又显示了行为的逐渐变化,我们发现通常没有唯一” 正确” 的指标阈值。因此,我们在优化网站的性能时可以参考上诉范围阈值,同时认识到没有一个完美的阈值,毕竟 “尽信书不如无书”,并且我们有时可能需要从多个合理的候选阈值中进行选择。我们不是要弄清” 完美的阈值是多少”,相反地,我们应该要专注于认清” 哪一个候选阈值最符合我们的网站”。

7 后续

本文从前端角度,讲述了用户性能体验的几种核心指标,并总结了相应的标准。同时从输入网址到页面完全加载完毕,系统的介绍了一个 web 页面的加载全流程。但是这只是作为一个开发者,评估一个页面性能所需要的基础理论知识,后续将努力为大家提供一些实际工作中的实践应用,如性能检测的应用方案,如 lighthouse 等工具的实际使用;web 页面性能优化要知道的二三事。

作者:京东物流 李菲菲

来源:京东云开发者社区 自猿其说 Tech 转载请注明来源从前端角度浅谈性能 | 京东物流技术团队


↙↙↙阅读原文可查看相关链接,并与作者交流