交互响应性能之优化FID

本文探讨了优化FID(First Input Delay)的方法,包括分解长任务、使用Web Worker、减少JS执行时间等。通过分解JS代码、优化页面加载、避免第三方脚本阻塞及智能使用polyfill,能显著提升网页的交互性能。开发者工具如Lighthouse和Chrome的Performance面板也是优化过程中的得力助手。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

由于 FID 需要一个真实用户的交互,所以无法用实验数据测试。

为了在实验数据下预测 FID,通常会用 TBT(Total Blocking Time),具体这个指标后面文章会介绍。他们测量的内容不同,但改善 TBT 通常也能改善 FID

一个糟糕的 FID 主要原因是JS执行过长,优化JS的解析、编译、执行可以直接降低 FID

过长的JS执行

当JS执行过程中,浏览器无法响应用户交互,因为主线程被占用,为了改善这点,可以:

  • 分解长任务
  • 优化页面,为交互准备
  • 使用 Web Worker
  • 减少JS执行时间

分解长任务

如果你准备尝试减少单个页面的js的体积,可以先考虑把较长执行的js代码分解成小的异步任务。

长任务指的是用户可能会发现页面无响应的时期执行的js代码。任何阻塞主线程大于等于50ms的代码都是长任务。长任务一般是js体积过大的潜在因素(浏览器加载并执行了比页面初始化所需要的更多的js)。

分解长任务可以降低用户输入延迟。

当你采用最佳实践(例如拆分代码、分解长任务),FID 会有显著改善。虽然 TBT 并非现场数据指标,但这对于改善 FIDTTI(Time To Interactive) 都很有帮助。

优化页面,为交互准备

造成 FIDTBT 分数低有很多原因,大多都是js引起的。

自己站点的脚本执行可能会延后交互
  • JS体积过大,执行时间过长,无效的分包会导致页面响应用户交互变慢,影响 FIDTBTTTI。逐步加载代码和功能块可以拆分这些任务,提升响应速度。
  • 服务端渲染看上去页面是出来了,但用户的交互还是受限于js的执行时间,可以考虑把更多逻辑代码放在服务端实现,或者在构建的时候创建更多静态内容。

下图是 TBT 得分的优化前后对比。通过将非必须的昂贵的脚本的加载和执行移出关键路径,用户就可以更快的去与页面交互。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值