运行性能指标

本文介绍了运行性能指标,其中包括Load在内的一系列指标,用于衡量页面加载各个阶段的性能数据。这些数据有助于开发者进行页面加载性能的诊断与优化。

什么是运行性能

  • 运行性能指标提供了有关页面间导航的详细数据,这些数据涵盖了从导航开始(如用户点击链接)到页面加载完成过程中各个步骤所耗费的时间。

  • 运行性能是Performance API的一部分,提供了一组精确的时间戳,如下图所示:

3FF7DC93-42D8-4153-AF8D-555F7E94942E.png

字段解释

  • navigationStart:浏览器开始导航到新文档的时间戳。

  • redirectStart:发起第一个重定向请求的时间戳(若存在重定向),否则为 0。

  • redirectEnd:收到最后一个重定向响应的最后一个字节的时间戳(若有重定向),否则为 0。

  • fetchStart:浏览器开始请求资源的时间戳。如果资源来源于缓存,则返回开始读取缓存的时间戳。

  • domainLookupStart:浏览器开始进行域名解析的时间戳。如果没有发起DNS请求,则返回fetchStart的时间戳。

  • domainLookupEnd:浏览器完成域名解析的时间戳。如果没有发起DNS请求,则返回fetchStart的时间戳。

  • connectStart:浏览器开始与服务器建立连接的时间戳。如果没有建立连接,则返回domainLookupEnd的时间戳。

  • secureConnectionStart:如果资源通过HTTPS加载,则返回浏览器开始握手过程的时间戳。如果未使用HTTPS,则返回 0。

  • connectEnd:浏览器完成与服务器建立连接的时间戳。如果没有建立连接,则返回domainLookupEnd的时间戳。

  • requestStart:浏览器开始向服务器、缓存或本地资源请求资源之前的时间戳。

  • responseStart:浏览器从服务器、缓存或本地资源接收第一个字节响应的时间戳。

  • responseEnd:浏览器接收资源的最后一个字节或连接关闭时的时间戳,以先发生者为准。

  • unloadStart:如果有前一个文档,表示当前文档的unload事件处理程序开始执行的时间戳。

  • unloadEnd:如果有前一个文档,表示当前文档的unload事件处理程序完成执行的时间戳。

  • domLoading:浏览器开始解析HTML文档的时间戳。

  • domInteractive:DOM树构建完成且可通过JavaScript进行交互的时间戳。

  • domContentLoaded:DOMCSSOM准备就绪可以开始构建渲染树的时间戳。

  • domComplete:文档和所有子资源全部加载完成的时间戳。

  • loadEventStart:当前文档的Load事件处理程序开始执行的时间戳。

  • loadEventEnd:当前文档的Load事件处理程序完成执行的时间戳。

Load

Load是运行性能中的一项关键指标,表示从导航开始到页面及其所有资源(例如图像、样式表、脚本等)完全加载并处理完成所花费的时间。

如何测量运行性能

在运行性能中,包含了DNS解析、TCP连接等几个重要阶段,需要测量各个阶段耗时。

计算方式

字段

公式

DNS解析耗时

domainLookupEnd - domainLookupStart

TCP建连耗时

connectEnd - connectStart

HTML请求响应耗时

responseStart - requestStart

HTML传输耗时

responseEnd - responseStart

DOM解析耗时

domInteractive - responseEnd

Load事件回调执行耗时

loadEventEnd - loadEventStart

Load指标

loadEventEnd - navigationStart

指标获取

JavaScript中,我们使用performance.timing API来获取运行性能的各个时间戳,然后根据这些时间戳和公式计算各项指标。

参考链接