统计页面的longtask(长任务)可以通过JavaScript中的Performance API来实现,具体步骤如下:
-
创建PerformanceObserver实例:
- 使用
PerformanceObserver
API创建一个观察者实例,这个实例将用于监听长任务。长任务指的是执行时间超过50毫秒的任务,这些任务可能会阻塞主线程,影响页面的交互性和流畅性。
- 使用
-
注册回调函数:
- 在创建
PerformanceObserver
实例时,需要提供一个回调函数。这个回调函数会在检测到长任务时被调用,并接收一个包含长任务性能条目的列表。
- 在创建
-
处理长任务数据:
- 在回调函数中,可以遍历长任务性能条目的列表,获取每个长任务的详细信息,如开始时间、持续时间等。然后,可以对这些数据进行处理,例如计算平均持续时间,或将数据发送到服务器进行进一步分析。
-
开始观察:
- 使用
observe
方法开始观察性能条目,并指定entryTypes
为['longtask']
,以仅观察长任务。
- 使用
-
停止观察和获取统计数据:
- 如果需要停止观察,可以调用
disconnect
方法。此外,还可以根据需要输出统计数据,如长任务的总次数和总耗时。 -
// 创建一个性能观察者实例来订阅长任务 const observer = new PerformanceObserver((list) => { list.getEntries().forEach((entry) => { console.log(`LongTask Detected:`, entry); console.log(`Start Time: ${entry.startTime}, Duration: ${entry.duration}`); // TODO: 这里可以根据需要进一步处理这些数据,比如发送给服务器 }); }); // 开始观察长任务 observer.observe({entryTypes: ["longtask"]});
- 如果需要停止观察,可以调用