PerformanceObserver
PerformanceObserver
它主要用于观察性能时间轴(Performance Timelinewindow.PerformanceObserver
,在const {performance} = require('perf_hooks')
。它在下列情况下是有用的。
- 测量请求(Request)和响应(Response)之间的处理时间
。 (浏览器) - 在从数据库中检索数据时计算持续时间
。 (Node.js 应用程序) - 抽象精确的时间信息,使用
Paint Timing API ,比如First Paint 或First Contentful Paint 时间 - 使用
"User Timing API" 、 “Navigation Timing API”、 “Network Information API”、 “Resource Timing API" 和"Paint Timing API" 访问性能指标
基础使用
创建观察者
可以通过调用它的构造函数和传递处理函数来创建它。
const observer = new PerformanceObserver(logger);
定义要观察的目标对象
observer.observe(...)
方法接受可以观察到的有效的入口类型。这些输入类型可能属于各种性能
- “mark”: [USER-TIMING]
- “measure”: [USER-TIMING]
- “navigation”: [NAVIGATION-TIMING-2]
- “resource”: [RESOURCE-TIMING]
// subscribe to User-Timing events
const config = { entryTypes: ["mark", "measure"] };
observer.observe(config);
定义回调函数事件
当应用程序中使用观察到的事件时,会触发回调处理程序。
function getDataFromServer() {
performance.mark("startWork");
// see [USER-TIMING]
doWork(); // Some developer code
performance.mark("endWork");
performance.measure("start to end", "startWork", "endWork");
const measure = performance.getEntriesByName("start to end")[0];
}
function logger(list, observer) {
const entries = list.getEntries();
entries.forEach(entry => {
console.log(
"Name: " +
entry.name +
", Type: " +
entry.entryType +
", Start: " +
entry.startTime +
", Duration: " +
entry.duration +
"\n"
);
});
}