浏览器的performance api 可以由window.performance属性下的一些操作字段构成。
window.performance下提供2种类型的字段:PerformanceTiming和PerformanceNavigation.
本文将对PerformanceTiming下的属性进行说明。
以下是关于navigation timing 的参数解释:
所有的返回时刻都是以1970年1月1号开始的毫秒数。
1. navigation start
立即返回用户unload前一个document的时刻, 这个时刻是浏览器彻底完成unload事件的时刻。如果前一个document为空,则返回和fetchStart属性相同的值。
2. unloadEventStart
分为3种情况:
a. 前一个document和当前的document都具有相同的origin时,这个属性必须立即返回browser刚开始unload前一个document之前的时刻。
b. 前一个document不存在时,或者前一个document和当前document处于不同的origin时,这个属性返回0.
c. 当有HTTP redirect时,并且不是所有这些redirect都在一个相同的origin内,unloadEventStart和unloadEventEnd必须返回0.
3. unloadEventEnd
分为3种情况:
a. 前一个document和当前的document都具有相同的origin时,这个属性必须立即返回browser完成unload前一个document的时刻。
b. 前一个document不存在时,或者前一个document和当前的document处于不同的origin时,又或者前一个document还未完全unload完时,这个属性会返回0.
c. 当有HTTP redirect时,并且不是所有这些redirect都在一个相同的origin内,unloadEventStart和unloadEventEnd必须返回0.
4.redirectStart
如果所有的http redirect都拥有相同的origin, 则返回初始化redirect时的fetchStart。否则返回0.
5. redirectEnd
当一个http redirect都拥有相同的origin, 该属性必须返回最后一次redirect中response传回的最后一个字节的时刻。否则返回0.
6. fetchStart
当HTTP GET请求资源时,如果有cache则browser返回检查cache之前的时刻。否则browser返回刚开始fetch的时刻。
7. domainLookupStart
该属性返回浏览器开始查找当前文档domain name的时刻。
如果该文档是本地资源或是从cache中load出来的,又或者用到了persistent connection,该属性返回和fetchStart相同的值。
8. domainLookupEnd
返回浏览器完成查找当前文档domain name的时刻。
如果该文档是本地资源或是从cache中load出来的,又或者用到了persistent connection,该属性返回和fetchStart相同的值。
如果浏览器在cache中已经有了domain的信息,domainLookupStart和domainLookupEnd分别表示从cache获取data的起始和结束时刻。
9. connectStart
这个属性必须在浏览器和服务器建立链接刚开始获取文档之前返回此刻时间。如果当前文档位于缓存中,或者用到了persistent connection,该属性返回domainLookupEnd.
10. connectEnd
该属性立即返回当浏览器和服务器完成与服务端的链接的时刻。如果当前文档位于缓存中,或者用到了persistent connection,该属性返回domainLookupEnd.
如果传输层(transport layer)发生故障导致网络链接被重新打开,connectStart和connectEnd会返回那个新链接的connectStart和connectEnd值。
connectEnd包括了诸如建立传输层链接、SSL握手和socks授权等的间隔时间。
11. secureConnectionStart
这个属性是可选的(optional),那些不支持这些属性browser会将其置为undefined. 当这一属性有效时,如果当前页面是https的,这个属性必须在browser建立握手机制确保connection安全之前返回时刻。
如果这个值可用但页面不是https的,此属性返回0.
12. requestStart
该属性返回browser刚开始向服务端、缓存或本地请求文档的时刻。
如果在request发出后传输层发生故障导致browser重新建立网络链接并重新发出请求,此时该属性返回新的请求对应的值。
Navigation Timing API 接口不提供类似requestEnd的属性。
从浏览器发出的request的完成时间是不包括在传输层中消耗的时间的,这导致类似requestEnd属性变得不是那么有意义。
另外,有些浏览器由于http层的封装,对于计算request的完成时间需要很大的开销。
13. responseStart
返回browser刚收到从server或cache中response的第一个字节的时刻。
14. responseEnd
返回在browser刚收完response的最后一个字节或者在网络传输层关闭之前的时刻。
15. domLoading
返回browser将当前文档标记为loading之前的时刻
16. domInteractive
返回browser将当前文档标记为interactive之前的时刻
17. domContentLoadedEventStart
返回browser发出DOMContentLoaded Event之前的时刻
18. domContentLoadedEventEnd
返回当DOMContentLoaded Event完成的时刻
19. domComplete
返回browser将当前文档标记为complete之前的时刻。
20. loadEventStart
在当前文档的load事件发生前返回时刻,若load事件还未发出,返回0.
21. loadEventEnd
在当前文档的load事件完成后返回时刻,若load事件还未发出或未完成,返回0.
参考文档:http://www.w3.org/TR/navigation-timing/#processing-model