1. Long Animation Frames(LoAF)API 在长帧的诊断
Long Animation Frames(LoAF)API 如何诊断长帧?与 Long Tasks 有何区别?
- long-animation-frame 条目的定义与内容
- 与 longtask 的差异(渲染纳入、归因更细)
- 在卡顿归因中的应用
LoAF(Long Animation Frames)API 通过 PerformanceObserver 监听 long-animation-frame 条目:当一帧的渲染任务(脚本 + 样式/布局/绘制 + 渲染)总耗时超过 50ms 时产生条目,包含 startTime、duration、脚本明细(script 数组:URL、函数名、耗时、类型)与渲染阶段耗时(styleAndLayout、paint)。与 Long Tasks 的区别:longtask 只覆盖"脚本任务",LoAF 以"帧"为单位把脚本与渲染合并统计,更贴近用户感知的卡顿(一帧内脚本+渲染超时);且 LoAF 提供 attribution(具体脚本来源),可直接定位到第三方脚本或业务代码。
诊断应用:用 LoAF 条目定位"帧超时"的组成——是脚本(哪个文件/函数)还是渲染(样式计算/布局/绘制);归因到第三方(ad/analytics SDK 的脚本 URL 直接可见);配合 Event Timing(交互到下一帧)把 INP 劣化映射到具体长帧。注意:LoAF 条目在页面无交互的空闲场景不产生(按帧渲染评估)、跨浏览器支持正在扩展(Chromium 已支持);工程上把它作为"长任务 + 帧级渲染"的统一诊断源。
考察长帧诊断的新 API:LoAF 以帧为单位合并脚本与渲染并带归因,回答应对比 longtask 的差异并给出归因用法。