Performance API - 支持应用程序内的客户端测量延迟时间
高精度时间标准定义了一个 Performance
接口,该接口支持应用程序内的客户端测量延迟时间。Performance
接口被认为是高精度的,因为它们精确到千分之一毫秒(受硬件或软件限制)。该接口支持许多用例,包括计算帧速率(在动画中可能很重要)和基准测试(例如加载资源的时间)。
由于平台的系统时钟受各种偏差(例如 NTP 调整)的影响,因此接口支持单调时钟,即始终增加的时钟。因此,Performance
API 定义了一个 DOMHighResTimeStamp
类型,而不是使用 Date.now()
接口。
DOMHighResTimeStamp
DOMHighResTimeStamp
类型,顾名思义,代表一个高精度的时间点。该类型是一个 double
,由 Performance
接口使用。该值可以是离散时间点或两个离散时间点之间的时间差。
DOMHighResTimeStamp
的单位是毫秒,应该精确到 5 µs(微秒)。但是,如果浏览器无法提供精确到 5 微秒的时间值(例如,由于硬件或软件限制),浏览器可以将该值表示为精确到毫秒的毫秒时间。
方法
Performance
接口有两个方法。
now()
方法返回一个 DOMHighResTimeStamp
,其值取决于导航开始
和范围。如果范围是窗口,则该值是创建浏览器上下文的时间,如果范围是工作线程
,则该值是创建工作线程的时间。
toJSON()
方法返回 Performance
对象的序列化,包含那些可以序列化的属性。
属性
Performance
接口有两个属性。
timing
属性返回一个 PerformanceTiming
对象,其中包含与延迟相关的性能信息,例如导航的开始时间、开始和结束时间重定向、响应的开始和结束时间等。
navigation
属性返回一个 PerformanceNavigation
对象,表示发生在给定浏览上下文中的导航类型,例如从历史记录导航到的页面,通过链接导航到的页面等。
接口
Performance
提供包含给定页面与时间相关的性能信息的方法和属性。
PerformanceEntry
提供了封装单个性能指标的方法和属性,是性能时间线的一部分。
PerformanceMark
条目类型
为 “mark
” 的性能条目
的抽象接口。这种类型的条目是通过调用 performance.mark()
将命名的 DOMHighResTimeStamp
(标记)添加到浏览器的性能时间线来创建的。
PerformanceMeasure
条目类型
为 “measure
” 的性能条目
的抽象接口。这种类型的条目是通过调用 performance.measure()
在浏览器的性能时间线的两个标记之间添加一个命名的 DOMHighResTimeStamp
(度量)来创建的。
PerformanceNavigationTiming
提供方法和属性来存储和检索高精度时间戳 或有关浏览器文档导航事件的指标。
PerformanceObserver
提供用于观察性能测量事件的方法和属性,并在浏览器的性能时间线中记录新的 性能条目 时收到通知。
PerformanceResourceTiming
提供用于检索和分析有关应用程序资源加载的详细网络计时数据的方法和属性。
规范
规范 |
---|
High Resolution Time |
Navigation Timing |
Performance Timing |
Resource Timing |
User Timing |
实现状态
如 Performance
接口的 浏览器兼容性 表中所示,桌面浏览器实现实现了这些接口中的大多数。
要测试浏览器对 Performance
接口的支持,请运行 perf-api-support
应用程序。