Interaction to Next Paint (INP)

浏览器支持

  • 96
  • 96
  • x
  • x

来源

Chrome 使用情况数据显示,用户 90% 的页面停留时间都是在加载所花,因此,在整个网页生命周期中仔细衡量响应速度非常重要。这是 INP 指标评估的内容。

良好的响应速度意味着网页可以快速响应互动。当网页响应互动时,浏览器会在其绘制的下一帧中提供视觉反馈。例如,视觉反馈会告诉您是否确实添加了您添加到在线购物车中的商品、移动导航菜单是否打开、服务器是否正在对登录表单的内容进行身份验证等。

有些互动的用时自然要比其他互动长,但对于特别复杂的互动,必须快速显示一些初始视觉反馈,让用户知道正在发生某件事。浏览器要绘制的下一帧是最早执行此操作的机会。

因此,INP 的目的不是衡量互动的所有最终影响(例如来自其他异步操作的网络提取和界面更新),而是衡量下一次绘制被阻塞的时间。延迟视觉反馈可能会让用户觉得页面响应速度不够快,因此开发了 INP,旨在帮助开发者衡量这部分用户体验。

在下面的视频中,右侧示例直接直观地反馈了手风琴正在开启。如左侧示例所示,响应能力很差,以及它如何导致糟糕的用户体验。

<ph type="x-smartling-placeholder"> <ph type="x-smartling-placeholder">
</ph> 示例:响应速度差还是良好。在左侧,冗长的任务会阻止手风琴打开。这会导致用户多次点击,以为他们的体验有损。当主线程跟上进度时,它会处理延迟的输入,导致手风琴意外打开和关闭。在右侧,响应速度更快的页面可快速打开手风琴,而不会出现任何意外情况。

本指南介绍了 INP 的运作方式、衡量方法,并提供了改进 INP 的资源。

什么是 INP?

INP 是一项指标,通过观察用户在访问网页的整个生命周期内发生的所有点击、点按和键盘互动的延迟时间,评估网页对用户互动的总体响应情况。最终 INP 值是观测到的最长互动时间,离群值会被忽略。

INP 的计算方式详情

INP 是通过观察用户与网页进行的所有互动计算得出的。对于大多数网站,延迟时间最长的互动会报告为 INP。

不过,对于具有大量互动的网页,随机中断可能会导致在响应迅速的网页上进行互动。网页上发生的互动越多,发生这种情况的可能性就越大。

为了更好地衡量互动次数较多的网页的实际响应速度,我们会忽略每 50 次互动中一次最高的互动。绝大多数网页体验都不到 50 次互动,因此最差的互动最常被报告。然后,系统会照常报告所有网页浏览量的第 75 个百分位,从而进一步移除离群值,从而给出绝大多数用户体验或更好的值。

互动是指在同一逻辑用户手势期间触发的一组事件处理脚本。例如,“点按”触摸屏设备上的互动包括多个事件,例如 pointeruppointerdownclick。互动可由 JavaScript、CSS、内置浏览器控件(例如表单元素)或以上各项的组合驱动。

互动的延迟时间包括从用户开始互动到浏览器绘制下一帧这一时刻,驱动互动的一组事件处理脚本的单个最长时长

INP 得分怎样才算高?

固定标签,如“good”(好)或“糟糕”很难衡量响应速度一方面,您要鼓励开发实践优先采用良好的响应能力。另一方面,您必须考虑到人们用于设定可实现开发期望的设备的功能存在很大差异。

为确保提供高响应性用户体验,比较理想的衡量阈值是现场记录的网页加载的第 75 个百分位,按移动设备和桌面设备细分:

  • 如果 INP 低于或等于 200 毫秒,则表示网页响应能力良好
  • 如果 INP 高于 200 毫秒或低于 500 毫秒,则表示网页的响应速度需要改进
  • 如果 INP 高于 500 毫秒,则表示网页的响应速度很慢
。 <ph type="x-smartling-placeholder">
</ph> 良好的 INP 值不超过 200 毫秒,不佳的值大于 500 毫秒,介于两者之间的所有值都需要改进。
合适的 INP 值不应超过 200 毫秒。错误值超过 500 毫秒。

互动中包含哪些内容?

描述主线程上的交互的示意图。用户在阻塞任务运行时进行输入。输入会延迟到这些任务完成,之后指针向上、mouseup 和点击事件处理程序会运行,然后开始渲染和绘制工作,直到呈现下一帧。
互动的生命周期。在事件处理脚本开始运行之前,会发生输入延迟,这可能是由主线程上的耗时任务等因素造成的。然后,系统会运行互动的事件处理程序回调,并且在呈现下一帧之前会发生延迟。

互动的主要驱动因素通常是 JavaScript,不过浏览器确实通过由 JavaScript 提供支持的控件(例如复选框、单选按钮以及由 CSS 提供支持的控件)提供互动功能。

就 INP 而言,系统仅观察到以下互动类型

  • 使用鼠标点击。
  • 点按带有触摸屏的设备。
  • 按实体键盘或屏幕键盘上的某个键。
。 <ph type="x-smartling-placeholder">

互动发生在主文档或文档中嵌入的 iframe 中,例如在嵌入式视频中点击播放。最终用户不会知道 iframe 中有哪些内容,因此,需要使用 iframe 中的 INP 来衡量顶级网页的用户体验。由于 JavaScript Web API 无权访问 iframe 的内容,因此这可能会表现为 CrUX 与 RUM 之间的差异

互动可以包含多个事件。例如,按键包括 keydownkeypresskeyup 事件。点按互动包含 pointeruppointerdown 事件。互动的总延迟时间取决于互动中持续时间最长的事件。

对包含两个互动的更复杂的互动的描绘。第一个是 mousedown 事件,它会在鼠标按钮松开之前生成一个帧,并触发更多工作,直到另一个帧作为结果呈现。
描述与多个事件处理脚本的互动。当用户点击鼠标按钮时,互动的第一部分接收输入。但是,在用户释放鼠标按钮之前,已呈现一个帧。当用户松开鼠标按钮时,必须运行另一一系列事件处理程序才能显示下一帧。

系统会在用户离开网页时计算网页的 INP。结果便是一个能代表网页在其整个生命周期内的整体响应情况的值。INP 较低表示网页能够可靠地响应用户输入。

INP 与 First Input Delay (FID) 有何不同?

INP 是 First Input Delay (FID) 的继任指标。虽然两者都是响应性指标,但 FID 仅衡量网页上首次互动的输入延迟INP 通过观察网页上所有互动(从输入延迟开始,到运行事件处理脚本所用的时间,再到浏览器绘制完下一帧)来改进 FID。

这些差异意味着,INP 和 FID 是不同类型的响应性指标。如果 FID 是旨在评估网页给用户的第一印象的加载响应性指标,则 INP 是更可靠的整体响应指标,而不考虑网页互动发生在网页的生命周期中。

如果没有报告 INP 值,该怎么办?

网页有时可能不会返回 INP 值。导致这种情况的原因有很多,其中包括:

  • 页面已加载,但用户从未点击、点按或按下键盘上的键。
  • 页面已加载,但用户使用了无法衡量的手势(例如滚动或将鼠标悬停在元素上)与之进行了互动。
  • 尚未编写脚本以与网页互动的漫游器(例如搜索抓取工具或无头浏览器)正在访问该网页。

如何衡量 INP

INP 可以在现场实验室中衡量,前提是您可以模拟真实的用户互动。

在野外

理想情况下,优化 INP 的历程将从现场数据开始。通过真实用户监控 (RUM) 提供的现场数据,您不仅可以获得网页的 INP 值,还可以提供情境数据,这些数据会突出显示导致 INP 值本身的具体互动、互动是在网页加载期间还是之后发生的、互动类型(点击、按键或点按),以及其他有价值的计时信息,帮助您确定互动的哪一部分影响了响应速度。

如果您的网站符合纳入 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 指标的主要目标是什么?

衡量网页上的首个内容显示所需的时间。
错误 - 描述的是 First Contentful Paint
量化网页的视觉稳定性,并最大限度地减少意外的布局偏移。
不正确 - 这里描述的是 Cumulative Layout Shift
评估网页达到完全互动状态所需的时间。
不正确 - 这与可交互时间相关,但 INP 特别注重对用户输入的响应速度
对于用户发起的所有或大部分互动,最大限度地缩短从用户发起互动到渲染下一帧的时间。
正确!

为了计算 INP,系统会观察到以下哪种互动类型?(请选择所有适用选项。)

使用鼠标点击。
正确!
使用鼠标滚轮或触控板滚动页面。
不正确 - INP 不会考虑滚动
点按触摸屏。
正确!
将鼠标光标悬停在元素上。
不正确 - INP 不会考虑悬停
按键盘上的某个键。
正确!
放大或缩小网页。
不正确 - INP 不考虑缩放

“延迟时间”如何?为 INP 定义的互动?

浏览器处理互动事件处理脚本所用的时间。
不正确 - 这只考虑了处理时长,而不考虑输入延迟或呈现下一帧的时间
网页上所有互动产生视觉响应所需的平均时间。
不正确 - INP 侧重于持续时间最长的互动,而不是平均互动
浏览器开始处理与互动相关联的事件处理脚本所用的时间。
不正确 - 这仅考虑输入延迟,而不考虑处理和渲染时间
从互动开始到下一帧完全呈现所需的时间。
正确!

INP 和 FID 有何区别?

INP 衡量的是页面中的第一个内容显示所需的时间,而 FID 衡量的是对用户输入的响应时间。
不正确 - 这里描述的是 First Contentful Paint,而不是 INP
INP 会考虑所有互动的完整时长,而 FID 仅衡量首次互动的输入延迟。
正确!
INP 和 FID 会衡量网页进入可互动状态的不同时间戳。
不正确 - INP 和 FID 衡量的是网页对互动的响应速度,不考虑互动的发生时间
没有区别INP 和 FID 只是同一指标的两个不同名称。
错误 - 两者的定义不尽相同

在什么情况下,PageSpeed Insights 等工具可能无法提供网页的 INP 数据?

网页使用的自定义效果衡量库不会报告 INP 数据。
不正确 - INP 是使用网络平台 API 自动衡量的,并不依赖于网页通过自定义库自行报告其性能。
Chrome 用户的互动数据不足,无法计算 CrUX 数据集中的有意义的 INP 值。
正确!
用户仅通过滚动和悬停与页面互动,INP 不会考虑此类互动。
正确!
该页面是使用自动针对 INP 进行优化的框架构建的,因此无需报告。
不正确 - 框架有助于确定 INP,但指标仍然相关,并会在数据可用时报告

要在实验室环境中重现缓慢互动,最有效的策略是什么?

在网络连接速度缓慢且不可靠的情况下模拟高端设备,以营造具有挑战性的条件。
不正确 - 虽然网络也能发挥一定作用,但设备功能更容易导致互动速度缓慢
仅在网页完全加载并处于空闲状态后测试互动情况。
不正确 - 这可能会错过加载期间较慢的互动
在加载期间与网页互动并遵循常见用户流,以确定潜在瓶颈。
正确!
专注于大多数用户不太可能遇到的复杂、极端情况交互。
错误 - 常见的用户流程更有助于识别典型 INP 问题

此测验由 Gemini 1.5 生成并经过人工审核。欢迎分享反馈