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()
根据给定的 name 和 entry type 返回 PerformanceEntry
对象的列表。
Performance.getEntriesByType()
返回给定 entry type 的 PerformanceEntry
对象的列表。
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() 方法。 |
桌面浏览器兼容性
特性 | Chrome | Edge | Firefox | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|---|
基础支持 | 6 | 支持 | 7 | 9 | 15 | 8 |
clearMarks | 29 25 — 29 webkit | 12 | 41 | 10 | 33 | 11 |
clearMeasures | 29 25 — 29 webkit | 12 | 41 | 10 | 33 | 11 |
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 | 12 | 41 | 10 | 33 | 11 |
measure | 28 25 — 28 webkit | 12 | 41 | 10 | 33 | 11 |
memory | 7 | 未知 | 不支持 | 未知 | 支持 | 不支持 |
navigation | 10 | 12 | 7 | 9 | 15 | 8 |
now | 24 21 — 24 webkit | 12 | 15123 | 10 | 15 | 8 |
onresourcetimingbufferfull | 46 22 — 574 | 未知 | 支持 | 不支持 | 不支持 | 11 |
resourcetimingbufferfull 事件 | 46 22 — 575 | 未知 | 支持 | 不支持 | 不支持 | 11 |
setResourceTimingBufferSize | 46 22 — 57 webkit | 12 | 支持 | 支持 | 支持 | 11 |
timeOrigin | 62 | 16 | 53 | 未知 | 49 | 不支持 |
timing | 6 | 12 | 7 | 9 | 15 | 8 |
toJSON | 56 | 12 | 25 | 未知 | 不支持 | 不支持 |
移动浏览器兼容性
特性 | Android | Chrome for Android | Edge mobile | Firefox for Android | IE mobile | Opera Android | iOS Safari |
---|---|---|---|---|---|---|---|
基础支持 | 支持 | 18 | 未知 | 7 | 未知 | 14 | 9 |
clearMarks | 支持 | 29 25 — 29 webkit | 未知 | 42 | 未知 | 33 | 11 |
clearMeasures | 支持 | 29 25 — 29 webkit | 未知 | 42 | 未知 | 33 | 11 |
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 | 未知 | 33 | 11 |
measure | 46 | 28 25 — 28 webkit | 未知 | 42 | 未知 | 33 | 11 |
memory | 支持 | 18 | 未知 | 不支持 | 未知 | 支持 | 不支持 |
navigation | 支持 | 18 | 未知 | 7 | 未知 | 不支持 | 9 |
now | 支持 | 25 | 未知 | 15123 | 未知 | 14 | 9 |
onresourcetimingbufferfull | 46 支持 — 574 | 46 25 — 574 | 未知 | 支持 | 未知 | 支持 | 不支持 |
resourcetimingbufferfull 事件 | 46 支持 — 575 | 46 25 — 575 | 未知 | 支持 | 未知 | 支持 | 不支持 |
setResourceTimingBufferSize | 46 支持 — 57 webkit | 46 25 — 57 webkit | 未知 | 支持 | 未知 | 支持 | 不支持 |
timeOrigin | 62 | 62 | 未知 | 53 | 未知 | 46 | 不支持 |
timing | 支持 | 18 | 未知 | 7 | 未知 | 14 | 9 |
toJSON | 56 | 56 | 未知 | 25 | 未知 | 不支持 | 不支持 |
1. 在 Firefox 57.0.4 中,准确性降低到 20 微秒。
2. 在 Firefox 60 中,准确性提高到 1 毫秒。
3. 在 Firefox 60 中,准确性提高到 1 毫秒。
4. 通过 onwebkitresourcetimingbufferfull
支持。
5. 通过 webkitresourcetimingbufferfull
支持。