Chrome 使用情况数据显示,用户 90% 的页面停留时间都是在加载后所花,因此,在整个网页生命周期中仔细衡量响应速度非常重要。INP 指标就是用来评估这一点的。
响应速度快意味着网页对互动做出快速响应。当网页响应互动时,浏览器会在其绘制的下一帧中提供视觉反馈。例如,视觉反馈可让您了解您添加到在线购物车中的商品是否确实已添加、移动导航菜单是否已打开、服务器是否正在对登录表单的内容进行身份验证,等等。
有些互动自然会比其他互动花费更长时间,但对于特别复杂的互动,请务必快速显示一些初始视觉反馈,以告知用户正在发生某些事情。浏览器要绘制的下一帧是最早执行此操作的机会。
因此,INP 的目的不是衡量互动的最终影响(例如网络提取和其他异步操作的界面更新),而是衡量下一次绘制被阻塞的时间。延迟视觉反馈可能会给用户造成网页响应速度不够快的印象,而 INP 旨在帮助开发者衡量这部分用户体验。
在以下视频中,右侧的示例会立即提供视觉反馈,表明该折叠式风琴正在打开。如左侧示例所示,响应能力很差,以及它如何导致糟糕的用户体验。
本指南介绍了 INP 的运作方式、衡量方法,并提供了有助于提升 INP 的指南。
什么是 INP?
INP 是一项指标,通过观察用户访问网页期间发生的所有点击、点按和键盘互动的延迟时间,评估网页对用户互动的总体响应情况。最终 INP 值是观测到的最长互动时间,离群值会被忽略。
INP 的计算方法是观察用户与网页进行的所有互动。对于大多数网站,延迟时间最长的互动会报告为 INP。
不过,对于具有大量互动的网页,随机中断可能会导致在响应迅速的网页上进行互动。在给定网页上发生的互动越多,这种情况就越有可能发生。
为了更好地衡量互动次数较多的网页的实际响应速度,我们会忽略每 50 次互动中一次最高的互动。绝大多数网页体验的互动次数不会超过 50 次,因此系统通常会报告最差的互动。然后,系统会照常报告所有网页浏览量的第 75 百分位数,从而进一步滤除离群值,以提供大多数用户所体验到的值或更好的值。
互动是指在同一逻辑用户手势期间触发的一组事件处理脚本。例如,触摸屏设备上的“点按”互动包括多个事件,例如 pointerup
、pointerdown
和 click
。互动可由 JavaScript、CSS、内置浏览器控件(例如表单元素)或这些元素的组合执行。
互动的延迟时间包括从用户开始互动到浏览器下一次能够绘制帧的那一刻,推动互动的一组事件处理脚本的最长一段时长。
INP 得分怎样才算理想?
固定标签,如“good”(好)或“糟糕”很难衡量响应速度一方面,您要鼓励开发实践优先采用良好的响应能力。另一方面,您必须考虑到人们用于设定可实现开发期望的设备的功能存在很大差异。
为确保提供高响应性用户体验,比较理想的衡量阈值是现场记录的网页加载的第 75 个百分位,按移动设备和桌面设备细分:
- INP 低于或等于 200 毫秒表示网页响应速度良好。
- 如果 INP 高于 200 毫秒,但低于或等于 500 毫秒,则表示网页的响应能力需要改进。
- 如果 INP 高于 500 毫秒,则表示网页的响应速度很慢。
互动中包含哪些内容?
互动的主要驱动因素通常是 JavaScript,不过浏览器确实通过未由 JavaScript 提供支持的控件(例如复选框、单选按钮以及由 CSS 提供支持的控件)提供互动功能。
根据 INP 的用途,系统仅会观察以下互动类型:
- 使用鼠标点击。
- 在带触摸屏的设备上点按。
- 按实体键盘或屏幕键盘上的按键。
互动发生在主文档中或嵌入在文档中的 iframe 中,例如点击嵌入的视频上的播放按钮。最终用户不会知道 iframe 中有哪些内容,因此,需要使用 iframe 中的 INP 来衡量顶级网页的用户体验。由于 JavaScript Web API 无权访问 iframe 的内容,因此这可能会表现为 CrUX 与 RUM 之间的差异
互动可以包含多个事件。例如,按键包括 keydown
、keypress
和 keyup
事件。点按互动包含 pointerup
和 pointerdown
事件。互动中时长最长的事件会增加互动总延迟时间。
系统会在用户离开网页时计算网页的 INP。这样,您将得到一个能够代表网页在其整个生命周期内的整体响应情况的值。INP 较低意味着网页能够可靠地响应用户输入。
INP 与 First Input Delay (FID) 有何不同?
INP 是 First Input Delay (FID) 的后继指标。虽然这两者都是响应速度指标,但 FID 仅衡量网页上首次互动的输入延迟。INP 通过观察网页上的所有互动(从输入延迟开始,到运行事件处理脚本所需的时间,最后到浏览器绘制下一个帧为止)来改进 FID。
这些差异意味着 INP 和 FID 是不同类型的响应能力指标。FID 是一种加载响应能力指标,旨在评估网页给用户的第一印象;而 INP 是一种更可靠的总体响应能力指标,无论网页互动发生在网页生命周期的哪个时间点,它都能反映网页的总体响应能力。
如果没有报告 INP 值,该怎么办?
网页可能不返回任何 INP 值。导致这种情况的原因有很多,其中包括:
- 页面已加载,但用户从未点击、轻触或按键盘上的按键。
- 页面已加载,但用户使用了无法衡量的手势(例如滚动或将鼠标悬停在元素上)与之进行了互动。
- 网页正在被聊天机器人(例如搜索抓取工具或无头浏览器)访问,但这些机器人未通过脚本编写来与网页互动。
如何衡量 INP
INP 可以在现场和实验室中衡量,前提是您可以模拟真实的用户互动。
<ph type="x-smartling-placeholder">在野外
理想情况下,优化 INP 的历程将从现场数据开始。通过真实用户监控 (RUM) 提供的现场数据,您不仅可以获得网页的 INP 值,还可以提供情境数据,这些数据会突出显示导致 INP 值本身的具体互动、互动是在网页加载期间还是之后发生的、互动类型(点击、按键或点按),以及其他有价值的计时信息,帮助您确定互动的哪一部分影响了响应速度。
<ph type="x-smartling-placeholder">如果您的网站符合纳入 Chrome 用户体验报告 (CrUX) 的条件,您可以通过 PageSpeed Insights 中的 CrUX(以及其他核心网页指标)快速获取 INP 的实测数据。您至少可以获取网站 INP 的原始级别的信息,但在某些情况下,您还可以获取网址级别的数据。
不过,虽然 CrUX 可以告诉您是否存在问题,但无法告诉您问题的原因。RUM 解决方案可帮助您发现与遇到响应问题的网页、用户或用户互动的更多详细信息。将 INP 归因于单个互动可以避免猜测和浪费工作。
实验室
理想情况下,在掌握了表明某网页互动速度缓慢的实测数据后,您就可以开始在实验室中进行测试。实测数据可以让在实验室中重现有问题的互动的工作变得更加简单直接。
不过,您完全有可能没有字段数据。虽然您可以在某些实验室工具中衡量 INP,但实验室测试期间网页的最终 INP 值将取决于衡量期间执行的互动。用户行为可能不可预测且高度不稳定,这意味着实验室测试可能不会像现场数据那样显示问题互动。此外,某些实验室工具不会报告网页的 INP,因为它们只会观察网页的加载情况,而不会进行任何互动。在这种情况下,总阻塞时间 (TBT) 可能是 INP 的合理替代指标,但其本身无法替代 INP。
虽然在评估网页的 INP 时,实验室工具存在一些限制,但您可以通过一些策略在实验室中重现互动缓慢的问题。这些策略包括跟踪常见的用户体验流程并测试其中的互动,以及在网页加载时与其互动(此时主线程通常最繁忙),以便在用户体验的关键部分发现互动缓慢的问题。
如何提高 INP
一系列关于优化 INP 的指南可引导您完成以下流程:识别现场互动缓慢的问题,并使用实验室数据帮助您找出原因并进行优化。
更新日志
有时,错误是在用于衡量指标的 API 中发现的,有时是在指标本身的定义中发现的。因此,有时必须进行更改,这些更改可能会在内部报告和信息中心显示为改进或回归。
为帮助您应对此问题,对这些指标的实现或定义所做的所有更改都会显示在此更新日志中。
如果您对这些指标有任何反馈,请在 web-vitals-feedback Google 群组中提供反馈。
知识测验
INP 指标的主要目标是什么?
为了计算 INP,系统会观察以下哪些互动类型?(请选择所有适用选项。)
如何为 INP 定义互动的“延迟时间”?
INP 和 FID 有何区别?
在什么情况下,PageSpeed Insights 等工具中可能无法为网页提供 INP 数据?
要在实验室环境中重现缓慢互动,最有效的策略是什么?
✨ 此知识问答由 Gemini 1.5 生成,并经过人工审核。分享您的反馈