Performance - 用于访问当前页面性能相关信息

Performance 接口用于访问当前页面性能相关信息。它是高精度时间 API 的一部分,但通过性能时间轴 API导航定时 API用户计时 API资源计时 API进行了增强。

可以通过调用 window.performance 只读属性来获得此类型的对象。

注意: 此接口及其成员在 Web Workers 中可用,以下有指示不可用的除外。另外,请注意,性能指标和衡量标准是根据具体情况而定的。如果在主线程(或其他工作线程)上创建标记,则无法在工作线程中看到该标记,反之亦然。

属性

Performance 接口不继承任何属性。

Performance.navigation 只读

一个旧版的 PerformanceNavigation 对象,可提供有关 timing 中列出的时间中所包括的操作的有用上下文,包括页面是加载还是刷新,发生了多少次重定向等。不适用于 Worker。

Performance.timing 只读

一个旧版的 PerformanceTiming 对象,其中包含与延迟相关的性能信息。不适用于 Worker。

Performance.memory 只读

一个 Chrome 中添加的非标准扩展,此属性是一个包含了基本的内存使用信息的对象。 不应使用此非标准 API。

Performance.timeOrigin 只读

返回性能测量开始时间的高精度时间戳。

方法

Performance 接口不继承任何方法。

Performance.clearMarks()

从浏览器的性能输入缓冲区中删除给定的标记

Performance.clearMeasures()

从浏览器的性能输入缓冲区中删除给定的度量

Performance.clearResourceTimings()

从浏览器的性能数据缓冲区中删除所有 entryType 为 “resource” 的性能条目

Performance.getEntries()

根据给定的 filter 返回 PerformanceEntry 对象的列表。

Performance.getEntriesByName()

根据给定的 nameentry type 返回 PerformanceEntry 对象的列表。

Performance.getEntriesByType()

返回给定 entry typePerformanceEntry 对象的列表。

Performance.mark()

使用给定名称在浏览器的 performance entry buffer(性能条目缓冲区)中创建一个timestamp

Performance.measure()

在浏览器的性能输入缓冲区中的两个指定标记(分别称为开始标记结束标记)之间创建一个名为 timestamp 的名称。

Performance.now()

返回一个 DOMHighResTimeStamp,表示自参考时刻以来经过的毫秒数。

Performance.setResourceTimingBufferSize()

将浏览器的资源计时缓冲区大小设置为指定数量的 "resource" 类型性能条目对象。

Performance.toJSON()

一个 json 序列化值,返回代表 Performance 对象的 json 对象。

事件

可以使用 addEventListener 或通过将事件监听器分配给此接口的 oneventname 属性来监听该事件。

resourcetimingbufferfull

当浏览器的资源计时缓冲区已满时触发。也可以通过 onresourcetimingbufferfull 属性绑定。

规范

规范 状态 备注
High Resolution Time Level 2
toJSON() 的定义
候选推荐 定义了 toJson() 方法。
High Resolution Time
Performance 的定义
推荐 定义了 now() 方法。
Performance Timeline Level 2
Performance extensions 的定义
候选推荐 更改了 getEntries() 接口。
Performance Timeline
Performance extensions 的定义
推荐 定义了 getEntries()getEntriesByType()getEntriesByName() 方法。
Resource Timing Level 1
Performance extensions 的定义
候选推荐 定义了 clearResourceTimings()setResourceTimingBufferSize() 方法和 onresourcetimingbufferfull 属性。
User Timing Level 2
Performance extensions 的定义
工作草案 阐明了 mark()clearMark()measure()clearMeasure() 方法。
User Timing
Performance extensions 的定义
推荐 定义了 mark()clearMark()measure()clearMeasure() 方法。

桌面浏览器兼容性

特性ChromeEdgeFirefoxInternet ExplorerOperaSafari
基础支持6 支持79158
clearMarks

29

25 — 29 webkit

1241103311
clearMeasures

29

25 — 29 webkit

1241103311
clearResourceTimings

46

22 — 57 webkit

12 支持 支持 支持11
getEntries

28

25 — 36 webkit

12 支持 支持 不支持11
getEntriesByName

28

25 — 36 webkit

12 支持 支持 不支持11
getEntriesByType

28

25 — 36 webkit

12 支持 支持

15

15 — 23 webkit

11
mark

28

25 — 28 webkit

1241103311
measure

28

25 — 28 webkit

1241103311
memory7 未知 不支持 未知 支持 不支持
navigation101279158
now

24

21 — 24 webkit

121512310158
onresourcetimingbufferfull

46

22 — 574

未知 支持 不支持 不支持11
resourcetimingbufferfull 事件

46

22 — 575

未知 支持 不支持 不支持11
setResourceTimingBufferSize

46

22 — 57 webkit

12 支持 支持 支持11
timeOrigin621653 未知49 不支持
timing61279158
toJSON561225 未知 不支持 不支持

移动浏览器兼容性

特性AndroidChrome for AndroidEdge mobileFirefox for AndroidIE mobileOpera AndroidiOS Safari
基础支持 支持18 未知7 未知149
clearMarks 支持

29

25 — 29 webkit

未知42 未知3311
clearMeasures 支持

29

25 — 29 webkit

未知42 未知3311
clearResourceTimings

46

支持 — 57 webkit

46

25 — 57 webkit

未知 支持 未知 支持11
getEntries 支持

28

25 — 36 webkit

未知25 未知 不支持11
getEntriesByName 支持

28

25 — 36 webkit

未知25 未知 不支持11
getEntriesByType 支持

28

25 — 36 webkit

未知25 未知

15

14 — 24 webkit

11
mark 支持

28

25 — 28 webkit

未知42 未知3311
measure46

28

25 — 28 webkit

未知42 未知3311
memory 支持18 未知 不支持 未知 支持 不支持
navigation 支持18 未知7 未知 不支持9
now 支持25 未知15123 未知149
onresourcetimingbufferfull

46

支持 — 574

46

25 — 574

未知 支持 未知 支持 不支持
resourcetimingbufferfull 事件

46

支持 — 575

46

25 — 575

未知 支持 未知 支持 不支持
setResourceTimingBufferSize

46

支持 — 57 webkit

46

25 — 57 webkit

未知 支持 未知 支持 不支持
timeOrigin6262 未知53 未知46 不支持
timing 支持18 未知7 未知149
toJSON5656 未知25 未知 不支持 不支持

1. 在 Firefox 57.0.4 中,准确性降低到 20 微秒。

2. 在 Firefox 60 中,准确性提高到 1 毫秒。

3. 在 Firefox 60 中,准确性提高到 1 毫秒。

4. 通过 onwebkitresourcetimingbufferfull 支持。

5. 通过 webkitresourcetimingbufferfull 支持。