INP指标

什么是INP(Interaction to Next Paint)

参考网站:webVital-INP文档


定义与核心目标

  • INP 是一项稳定的 Core Web Vitals 指标,通过统计用户访问期间所有符合条件的互动约定时间,评估网页对用户操作的总体响应能力。
  • 最终值:取观察到的最长互动时间(可能忽略高群值)。
  • 用户体验目标
    INP 应 ≤ 200 毫秒,建议以 P75(按设备类型细分)作为达标基准。

检测工具

  1. Chrome插件
    Web Vitals
  2. 其他测试网站
    PageSpeed Insights

指标计算规则

互动延迟由三阶段组成:

  1. 输入延迟,从用户发起与网页的互动开始,在互动的事件回调开始运行时结束。
  2. 处理时间,由事件回调运行完成所需的时间组成。
  3. 呈现延迟时间,即浏览器呈现下一帧(包含互动的视觉效果)所需的时间。

这三个阶段的总和就是总互动延迟时间,总延迟 = 输入延迟 + 处理时间 + 呈现延迟。

互动的每个阶段都会计入互动总延迟时间,因此了解如何优化互动的每个部分,以尽可能缩短互动的运行时间。


优化措施

关键策略

  1. 具体分析查找卡顿原因
    https://web.dev/articles/find-slow-interactions-in-the-field?hl=zh-cn#get_field_data_quickly_with_crux
    还可以使用 Chrome DevTools 定位缓慢的交互事件。

  2. 将非关键更新推迟到下一帧执行,让渡主线程执行关键业务
    避免让当前执行的任务阻塞用户交互、阻塞页面渲染;或者页面渲染任务过重阻塞业务代码执行。
    学会使用requestAnimationFrame() 放置于代码中,它可以确保非关键代码不会阻塞下一帧。

  3. 避免过于冗长的回调方法,它们都是顺序执行的,可以在关键更新执行后,剩下的回调方法放置于requestAnimationFrame()中执行。

    javascript 复制代码
    textBox.addEventListener('input', (inputEvent) => {
      // 关键更新立即执行
      updateTextBox(inputEvent);
      
      // 非关键逻辑延后
      requestAnimationFrame(() => {
        setTimeout(() => {
          const text = textBox.textContent;
          updateWordCount(text);
          checkSpelling(text);
          saveChanges(text);
        }, 0);
      });
    });
相关推荐
郭邯6 分钟前
用纯前端实现一个代码压缩美化工具,我踩了这三个坑
前端
用户283209679379 分钟前
从进程线程到 async/await:JS Event-loop事件循环机制底层解析
前端·javascript
岁月宁静18 分钟前
一、《从零手撸 Agent》 我用 10 行代码跑通了第一次大模型调用(顺便踩了 4 个坑)
前端·python·agent
计算机魔术师37 分钟前
Fable 5.1 来了,智能体任务成本降 45%——Anthropic 这次为何降价这么狠
前端
Csvn38 分钟前
现代 CSS 新特性深度:container query、:has()、@scope 与 subgrid
前端
计算机魔术师43 分钟前
Anthropic 自己承认:模型越来越难管住了
前端
两只羊ovo1 小时前
Agent 干活的底层地基:path 路径 + fs 文件系统,一次讲透
前端
一用书生1 小时前
我给 ChatGPT、DeepSeek、Kimi 都加了一个「保存为笔记」按钮
前端·ai编程·vibecoding
咖啡无伴侣1 小时前
1. 从零搭建企业级 Monorepo 工程化模板:初始化、应用创建与共享 TypeScript 配置
前端·前端框架
moonsims1 小时前
再议AiBrainBox-V的前左右三目布局-满足多目SLAM算法;对比单下视VIO(低空、地面纹理丰富、飞行速度适中无人机 )&多目VIO
前端·人工智能·量子计算