使用 RAIL 模型衡量性能

RAIL 是一种以用户为中心的性能模型,它提供了一种思考性能的结构。该模型将用户体验细分为关键操作(例如点按、滚动、加载),并帮助您为每个操作定义效果目标。

RAIL 代表 Web 应用生命周期的四个不同方面:响应、动画、空闲和加载。用户对每种情境都有不同的性能预期,因此性能目标是根据情境和有关用户如何感知延迟的用户体验研究来定义的。

RAIL 性能模型的 4 个部分:响应、动画、空闲和加载。
RAIL 性能模型的 4 个部分

专注于满足用户需求

让用户成为性能工作的焦点。下表介绍了用户如何感知性能延迟的关键指标:

用户对性能延迟的感知
0 至 16 毫秒 用户非常擅长跟踪运动,他们不喜欢不流畅的动画。只要每秒渲染 60 个新帧,用户就会觉得动画很流畅。即每帧 16 毫秒,其中包括浏览器将新帧绘制到屏幕上所需的时间,因此应用大约有 10 毫秒的时间来生成一帧。
0 至 100 毫秒 在此时间窗口内响应用户操作,用户会感觉结果是即时的。如果时间过长,操作与反应之间的联系就会断开。
100 至 1000 毫秒 在此窗口中,各项任务会自然而然地连续推进。对于大多数 Web 用户而言,加载网页或更改视图代表一项任务。
1000 毫秒或更长时间 超过 1,000 毫秒(1 秒)后,用户会失去对正在执行的任务的注意力。
10000 毫秒或更长时间 超过 10,000 毫秒(10 秒)后,用户会感到沮丧,并可能会放弃任务。他们可能会也可能不会再回来。

目标和准则

在 RAIL 的上下文中,术语“目标”和“准则”具有特定含义:

  • 目标。与用户体验相关的关键效果指标。例如,点按后在 100 毫秒内绘制。由于人类的感知相对恒定,因此这些目标不太可能在短期内发生变化。

  • 指南。可帮助您实现目标的建议。这些建议可能特定于当前的硬件和网络连接条件,因此可能会随时间而变化。

响应:在 50 毫秒内处理事件

目标:在 100 毫秒内完成由用户输入发起的过渡,让用户感觉互动是即时的。

指南:

  • 为确保在 100 毫秒内做出可见响应,请在 50 毫秒内处理用户输入事件。这适用于大多数输入,例如点击按钮、切换表单控件或启动动画。这不适用于轻触拖动或滚动。

  • 虽然这听起来可能不合常理,但立即响应用户输入并不总是正确的做法。您可以使用这 100 毫秒的时间窗口来执行其他耗费资源的工作,但请注意不要阻塞用户。尽可能在后台执行工作。

  • 对于需要超过 50 毫秒才能完成的操作,请始终提供反馈。

50 毫秒还是 100 毫秒?

目标是在 100 毫秒内响应输入,那么为什么我们的预算只有 50 毫秒?这是因为除了输入处理之外,通常还会执行其他工作,而这些工作会占用一部分可用于可接受输入响应的时间。如果应用在空闲时间以建议的 50 毫秒区块执行工作,这意味着如果输入发生在其中一个工作区块期间,则最多可以排队 50 毫秒。考虑到这一点,可以安全地假设只有剩余的 50 毫秒可用于实际输入处理。下图直观地展示了这种影响,其中显示了在空闲任务期间收到的输入如何排队,从而减少了可用的处理时间:

图表显示了在空闲任务期间收到的输入如何排队,从而将可用的输入处理时间缩短到 50 毫秒
空闲任务如何影响输入响应预算。

动画:在 10 毫秒内生成一帧

目标:

  • 在 10 毫秒或更短时间内生成动画中的每一帧。从技术上讲,每帧的最大预算为 16 毫秒(1000 毫秒/每秒 60 帧 ≈ 16 毫秒),但浏览器需要大约 6 毫秒来渲染每帧,因此每帧的预算为 10 毫秒。

  • 力求实现视觉流畅性。用户会注意到帧速率的变化。

指南:

  • 在动画等高压力点,关键在于尽可能不执行任何操作,在无法避免时执行绝对最少的操作。尽可能利用 100 毫秒的响应时间来预先计算开销较大的作业,从而最大限度地提高达到 60 fps 的几率。

  • 如需了解各种动画优化策略,请参阅渲染性能。

  • 视觉动画,例如进入和退出、补间动画以及加载指示器。
  • 滚动。这包括快速滑动,即用户开始滚动,然后松开,页面继续滚动。
  • 拖动。动画通常会跟随用户互动,例如平移地图或双指张合进行缩放。

空闲:最大限度延长空闲时间

目标:尽可能延长空闲时间,以提高网页在 50 毫秒内响应用户输入的几率。

指南:

  • 利用空闲时间完成延迟的工作。例如,对于初始网页加载,请尽可能少地加载数据,然后使用空闲时间加载其余数据。

  • 在空闲时间执行工作,耗时不超过 50 毫秒。如果超过此时间,您可能会干扰应用在 50 毫秒内响应用户输入的能力。

  • 如果用户在空闲时间工作期间与页面互动,则用户互动应始终具有最高优先级,并中断空闲时间工作。

加载:在 5 秒内呈现内容并可供用户互动

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

目标:

指南:

用于衡量 RAIL 的工具

有几种工具可以帮助您自动执行 RAIL 测量。您使用哪种方法取决于您需要的信息类型以及您偏好的工作流类型。

Chrome DevTools

Chrome 开发者工具可对网页加载或运行期间发生的所有情况进行深入分析。请参阅分析运行时性能入门,熟悉性能面板界面。

以下 DevTools 功能尤为重要:

灯塔

Lighthouse 可在 Chrome 开发者工具、PageSpeed Insights、Chrome 扩展程序、Node.js 模块和 WebPageTest 中使用。您只需提供一个网址,它就会模拟一个使用慢速 3G 连接的中端设备,对该网页运行一系列审核,然后为您提供加载性能报告以及改进建议。

以下审核尤为重要:

答案

加载

WebPageTest

WebPageTest 是一款 Web 性能工具,它使用真实的浏览器访问网页并收集计时指标。在 webpagetest.org/easy 中输入网址,即可获取有关该网页在连接到慢速 3G 网络的真实 Moto G4 设备上的加载性能的详细报告。您还可以将其配置为包含 Lighthouse 审核。

摘要

RAIL 是一种视角,它将网站的用户体验视为由不同互动组成的历程。了解用户对您网站的看法,以便设定对用户体验影响最大的效果目标。

  • 专注于满足用户需求。

  • 在 100 毫秒内响应用户输入。

  • 在动画或滚动时,在 10 毫秒内生成一帧。

  • 最大限度地增加主线程空闲时间。

  • 在 5000 毫秒内加载互动内容。