2.2.1 timing API

2.2.1 timing API

timing的总体结构以下图所示:
css

各字段的含义以下:html

  • startTime:有些浏览器实现为navigationStart,表明浏览器开始unload前一个页面文档的开始时间节点。好比咱们当前正在浏览baidu.com,在地址栏输入google.com并回车,浏览器的执行动做依次为:unload当前文档(即baidu.com)->请求下一文档(即google.com)。navigationStart的值即是触发unload当前文档的时间节点。web

    若是当前文档为空,则navigationStart的值等于fetchStart。api

  • redirectStartredirectEnd:若是页面是由redirect而来,则redirectStart和redirectEnd分别表明redirect开始和结束的时间节点;
  • unloadEventStartunloadEventEnd:若是前一个文档和请求的文档是同一个域的,则unloadEventStartunloadEventEnd分别表明浏览器unload前一个文档的开始和结束时间节点。不然二者都等于0;
  • fetchStart是指在浏览器发起任何请求以前的时间值。在fetchStart和domainLookupStart之间,浏览器会检查当前文档的缓存;
  • domainLookupStartdomainLookupEnd分别表明DNS查询的开始和结束时间节点。若是浏览器没有进行DNS查询(好比使用了cache),则二者的值都等于fetchStart
  • connectStartconnectEnd分别表明TCP创建链接和链接成功的时间节点。若是浏览器没有进行TCP链接(好比使用持久化链接webscoket),则二者都等于domainLookupEnd
  • secureConnectionStart:可选。若是页面使用HTTPS,它的值是安全链接握手以前的时刻。若是该属性不可用,则返回undefined。若是该属性可用,但没有使用HTTPS,则返回0;
  • requestStart表明浏览器发起请求的时间节点,请求的方式能够是请求服务器、缓存、本地资源等;
  • responseStartresponseEnd分别表明浏览器收到从服务器端(或缓存、本地资源)响应回的第一个字节和最后一个字节数据的时刻;
  • domLoading表明浏览器开始解析html文档的时间节点。咱们知道IE浏览器下的document有readyState属性,domLoading的值就等于readyState改变为loading的时间节点;
  • domInteractive表明浏览器解析html文档的状态为interactive时的时间节点。domInteractive并不是DOMReady,它早于DOMReady触发,表明html文档解析完毕(即dom tree建立完成)可是内嵌资源(好比外链css、js等)还未加载的时间点;
  • domContentLoadedEventStart:表明DOMContentLoaded事件触发的时间节点:数组

    页面文档彻底加载并解析完毕以后,会触发DOMContentLoaded事件,HTML文档不会等待样式文件,图片文件,子框架页面的加载(load事件能够用来检测HTML页面是否彻底加载完毕(fully-loaded))。浏览器

  • domContentLoadedEventEnd:表明DOMContentLoaded事件完成的时间节点,此刻用户能够对页面进行操做,也就是jQuery中的domready时间;
  • domComplete:html文档彻底解析完毕的时间节点;
  • loadEventStartloadEventEnd分别表明onload事件触发和结束的时间节点缓存

2.2.2 计算性能指标

可使用Navigation.timing 统计到的时间数据来计算一些页面性能指标,好比DNS查询耗时、白屏时间、domready等等。以下:安全

  • DNS查询耗时 = domainLookupEnd - domainLookupStart
  • TCP连接耗时 = connectEnd - connectStart
  • request请求耗时 = responseEnd - responseStart
  • 解析dom树耗时 = domComplete - domInteractive
  • 白屏时间 = domloadng - fetchStart
  • domready时间 = domContentLoadedEventEnd - fetchStart
  • onload时间 = loadEventEnd - fetchStart
2.2.3 Resource timing API

Resource timing API是用来统计静态资源相关的时间信息,详细的内容请参考W3C Resource timing。这里咱们只介绍performance.getEntries方法,它能够获取页面中每一个静态资源的请求,以下:
服务器

能够看到performance.getEntries返回一个数组,数组的每一个元素表明对应的静态资源的信息,好比上图展现的第一个元素对应的资源类型initiatorType是图片img,请求花费的时间就是duration的值。框架

关于Resource timing API的使用场景,感兴趣的同窗能够深刻研究。

相关文章
相关标签/搜索