PerformanceEntry
注意:此功能在Web Workers中可用。
PerformanceEntry
对象封装了浏览器性能时间轴中的单个性能指标。
Performance API 提供了内置的指标,这些指标是 PerformanceEntry
的专用子类。这包括资源加载、事件计时、首次输入延迟 (FID) 等条目。
还可以在应用程序中的明确点处调用 Performance.mark()
或 Performance.measure()
方法来创建性能条目。这允许您将自己的指标添加到性能时间轴中。
PerformanceEntry
实例将始终是以下子类之一
LargestContentfulPaint
LayoutShift
PerformanceEventTiming
PerformanceLongAnimationFrameTiming
PerformanceLongTaskTiming
PerformanceMark
PerformanceMeasure
PerformanceNavigationTiming
PerformancePaintTiming
PerformanceResourceTiming
PerformanceScriptTiming
PerformanceServerTiming
TaskAttributionTiming
VisibilityStateEntry
实例属性
PerformanceEntry.name
只读-
表示性能条目的名称的字符串。该值取决于子类型。
PerformanceEntry.entryType
只读-
表示性能指标类型的字符串。例如,当使用
PerformanceMark
时为“mark
”。 PerformanceEntry.startTime
只读-
一个
DOMHighResTimeStamp
,表示性能指标的开始时间。 PerformanceEntry.duration
只读-
一个
DOMHighResTimeStamp
,表示性能条目的持续时间。
实例方法
PerformanceEntry.toJSON()
-
返回
PerformanceEntry
对象的 JSON 表示形式。
示例
处理性能条目
以下示例创建了类型为 PerformanceMark
和 PerformanceMeasure
的 PerformanceEntry
对象。PerformanceMark
和 PerformanceMeasure
子类继承了 PerformanceEntry
的 duration
、entryType
、name
和 startTime
属性,并将其设置为相应的值。
js
// Place at a location in the code that starts login
performance.mark("login-started");
// Place at a location in the code that finishes login
performance.mark("login-finished");
// Measure login duration
performance.measure("login-duration", "login-started", "login-finished");
function perfObserver(list, observer) {
list.getEntries().forEach((entry) => {
if (entry.entryType === "mark") {
console.log(`${entry.name}'s startTime: ${entry.startTime}`);
}
if (entry.entryType === "measure") {
console.log(`${entry.name}'s duration: ${entry.duration}`);
}
});
}
const observer = new PerformanceObserver(perfObserver);
observer.observe({ entryTypes: ["measure", "mark"] });
规范
规范 |
---|
性能时间轴 # dom-performanceentry |
浏览器兼容性
BCD 表格仅在浏览器中加载