浏览器新面试考点:核心网页交互新指标“INP”

本篇译自:web.dev/blog/inp-cw...

2020 年初,Google Chrome 团队推出了"核心 Web 指标",旨在为网页提供一系列质量信号。

Google Chrome 团队即将对核心 Web 指标进行一些更改,以便更好地评估网页的用户体验质量。

在本文中,我们将探讨这一变化以及它带来的影响。

时间线:

曾经,First Input Delay (FID) 是核心 Web 指标中的一项响应性指标,但 FID 已知存在一些限制。

FID 是一种加载响应度指标,其背后的原理是,如果在加载阶段对页面的第一个交互没有明显的输入延迟,那么页面给人的第一印象就是良好的。缺点就是:FID 仅测量第一个交互的输入延迟,而不考虑运行事件处理程序的时间或呈现下一帧的延迟。

经过一年的测试并收集社区反馈后,Chrome 团队决定提升 INP 作为核心 Web 指标中的一项新的响应性指标,并从 2024 年 3 月起取代 FID。

也就是说:2024 年 3 月,INP 取代 FID 后,Search Console 报告将不再显示 FID 指标,并将 INP 用作新的响应性指标。

INP 的计算借助 Event Timing API,通过观察事件处理程序的延迟来确定交互的响应时间。

FID 只关注页面加载阶段的第一个交互,而 INP 考虑了页面的所有交互。它的目标是确保用户发起交互到下一帧渲染的时间尽可能短,以提供良好的用户体验。

具体来说:Google 测试会根据网站上大多数用户互动的持续时间得出一个 INP 分数。分数将为"好"、"需要改进"或"差",具体取决于您的网站在视觉上更新所需的时间。

从这张表中不难看出:

  • INP低于或等于200毫秒: 表明你的页面响应良好,用户体验优秀。
  • INP在200毫秒以上但低于或等于500毫秒: 表明你的页面响应需要改进,存在一定的用户体验问题。
  • INP高于500毫秒: 表明你的页面响应性差,用户体验较差,亟需优化。

谷歌官方强烈建议网站所有者实现良好的核心 Web 指标,确保用户在总体上获得良好的体验。


开发人员如何针对 INP 优化代码?

如果你是开发人员,如果想优化 INP 分数,可以作如下操作。

1. 立即确认用户输入

在优化 INP 分数时,有一件事非常重要,即是:你需要立即向所有用户输入提供视觉反馈;

用户应立即看到他们的输入被识别,并且系统正在对其执行操作。这将明显提高 INP 分数;

以下是一些示例:

  • 如果用户单击某个元素,则应立即显示已单击该元素的内容。
  • 如果用户提交表单,则需要立即显示某些内容以确认,例如消息等。
  • 如果用户点击图像以在灯箱中打开它,则不要只是等待图像加载。相反,应该立即显示演示图像或缩略图。然后,加载图像后,再在窗口中显示它。

特别是如果需要进行繁重的JavaScript处理以响应用户输入,只需确保在开始任务之前更新 UI。之后,可以使用 Web worker 在 setTimeout 回调或单独的线程上执行 CPU 密集型工作,然后最终将结果呈现给用户。

2. 优化浏览器最耗时的环节

我们应该调查浏览器最耗时的环节,然后优化这些部分。

在谷歌浏览器中,当导航到查看 >> 开发人员 >> 开发人员工具 >> 性能时,可以检查阻止下一个绘制的 JavaScript 函数和事件处理程序。

通过这样的办法减少用户 INP 时间。

3. 减少布局

有时,许多 CPU 活动由布局工作组成。

发生这种情况时,应该检查是否可以减少代码中的 relayout 函数。

4. 首先显示首屏内容

如果呈现页面内容很慢,那么 INP 分数很可能会受到影响。

所以,考虑先只显示重要的"首屏"内容,以便更快地体现帧的渲染结果。


说到这里,我们不难发现:成长与发展是学习与工作的主旋律 ~ 最后,自荐一下我和机械工业出版社联合出版的 《程序员成长手记》 一书:全书分为3大模块、8个章节:从入门程序员到程序员自驱成长,回归纸质阅读,相信能给你一个更全局的程序员视野,提供成长帮助。京东搜"程序员成长手记"

OK,以上便是本次分享,希望各位喜欢~ 欢迎点赞、收藏、评论 🤟 我是安东尼 🤠 人气技术博主 💥 坚持千日更文 ✍ 关注我,安东尼陪你一起度过漫长编程岁月

相关推荐
永乐春秋8 分钟前
WEB攻防-通用漏洞&文件上传&js验证&mime&user.ini&语言特性
前端
鸽鸽程序猿9 分钟前
【前端】CSS
前端·css
ggdpzhk11 分钟前
VUE:基于MVVN的前端js框架
前端·javascript·vue.js
学不会•2 小时前
css数据不固定情况下,循环加不同背景颜色
前端·javascript·html
活宝小娜5 小时前
vue不刷新浏览器更新页面的方法
前端·javascript·vue.js
程序视点5 小时前
【Vue3新工具】Pinia.js:提升开发效率,更轻量、更高效的状态管理方案!
前端·javascript·vue.js·typescript·vue·ecmascript
coldriversnow5 小时前
在Vue中,vue document.onkeydown 无效
前端·javascript·vue.js
我开心就好o5 小时前
uniapp点左上角返回键, 重复来回跳转的问题 解决方案
前端·javascript·uni-app
开心工作室_kaic6 小时前
ssm161基于web的资源共享平台的共享与开发+jsp(论文+源码)_kaic
java·开发语言·前端
刚刚好ā6 小时前
js作用域超全介绍--全局作用域、局部作用、块级作用域
前端·javascript·vue.js·vue