资讯专栏INFORMATION COLUMN

用PerformanceTiming来检测页面性能

IntMain / 1502人阅读

摘要:如果没有前一个网页,则等于属性。该事件在网页查询本地缓存之前发生。如果使用持久连接,则返回值等同于属性的值。返回当前网页结构生成时即属性变为,以及相应的事件发生时的毫秒时间戳。

window.performance.timing下的属性

navigationStart

当前浏览器窗口的前一个网页关闭,发生unload事件时的Unix毫秒时间戳。如果没有前一个网页,则等于fetchStart属性。

unloadEventStart

如果前一个网页与当前网页属于同一个域名,则返回前一个网页的unload事件发生时的Unix毫秒时间戳。如果没有前一个网页,或者之前的网页跳转不是在同一个域名内,则返回值为0;

unloadEventEnd

如果前一个网页与当前网页属于同一个域名,则返回前一个网页unload事件的回调函数结束时的Unix毫秒时间戳。如果没有前一个网页,或者之前的网页跳转不是在同一个域名内,则返回值为0。

redirectStart

返回第一个HTTP跳转开始时的Unix毫秒时间戳。如果没有跳转,或者不是同一个域名内部的跳转,则返回值为0。

redirectEnd

返回最后一个HTTP跳转结束时(即跳转回应的最后一个字节接受完成时)的Unix毫秒时间戳。如果没有跳转,或者不是同一个域名内部的跳转,则返回值为0。

fetchStart

返回浏览器准备使用HTTP请求读取文档时的Unix毫秒时间戳。该事件在网页查询本地缓存之前发生。

domainLookupStart

返回域名查询开始时的Unix毫秒时间戳。如果使用持久连接,或者信息是从本地缓存获取的,则返回值等同于fetchStart属性的值。

domainLookupEnd

回域名查询结束时的Unix毫秒时间戳。如果使用持久连接,或者信息是从本地缓存获取的,则返回值等同于fetchStart属性的值。

connectStart

返回HTTP请求开始向服务器发送时的Unix毫秒时间戳。如果使用持久连接(persistent connection),则返回值等同于fetchStart属性的值。

connectEnd

返回浏览器与服务器之间的连接建立时的Unix毫秒时间戳。如果建立的是持久连接,则返回值等同于fetchStart属性的值。连接建立指的是所有握手和认证过程全部结束

secureConnectionStart

返回浏览器与服务器开始安全链接的握手时的Unix毫秒时间戳。如果当前网页不要求安全连接,则返回0。

requestStart

返回浏览器向服务器发出HTTP请求时(或开始读取本地缓存时)的Unix毫秒时间戳。

responseStart

返回浏览器从服务器收到(或从本地缓存读取)最后一个字节时(如果在此之前HTTP连接已经关闭,则返回关闭时)的Unix毫秒时间戳

domLoading

返回当前网页DOM结构开始解析时(即Document.readyState属性变为“loading”、相应的readystatechange事件触发时)的Unix毫秒时间戳。

domInteractive

返回当前网页DOM结构结束解析、开始加载内嵌资源时(即Document.readyState属性变为“interactive”、相应的readystatechange事件触发时)的Unix毫秒时间戳。

domContentLoadedEventStart

返回当前网页DOMContentLoaded事件发生时(即DOM结构解析完毕、所有脚本开始运行时)的Unix毫秒时间戳。

domContentLoadedEventEnd

返回当前网页所有需要执行的脚本执行完成时的Unix毫秒时间戳。

domComplete

返回当前网页DOM结构生成时(即Document.readyState属性变为“complete”,以及相应的readystatechange事件发生时)的Unix毫秒时间戳。

loadEventStart

返回当前网页load事件的回调函数开始时的Unix毫秒时间戳。如果该事件还没有发生,返回0。

loadEventEnd

返回当前网页load事件的回调函数运行结束时的Unix毫秒时间戳。如果该事件还没有发生,返回0。

如何分析页面整体加载速度

一般页面统计所需要的参数(dom解析时间,domContentLoaded时间,onload时间, 白屏时间,getStyleConfig接口返回时间 - 准备加载新页面的起始时间)

        let pt = window.performance.timing;  
        /* dom解析时间 
         *
         *
         *1.domComplete  
         *当前网页DOM结构生成时(即Document.readyState属性变为“complete”,以及相应的
         *readystatechange事件发生时)的Unix毫秒时间戳
         *
         *2.domInteractive 
         *当前网页DOM结构结束解析、开始加载内嵌资源时
         *即Document.readyState属性变为“interactive”、相应的readystatechange事件触发时
         *的Unix毫秒时间戳。
         */
        let domComplete = pt.domComplete - pt.domInteractive;
        /* domContentLoaded时间
         *
         *
         *当前网页DOM结构生成时(即Document.readyState属性变为“complete”,以及相应的
         *1.domContentLoadedEventEnd  
         *网页DOMContentLoaded事件发生时(即DOM结构解析完毕、所有脚本开始运行时)的Unix毫秒时间
         *戳。
         *
         *2.navigationStart 
         *当前浏览器窗口的前一个网页关闭,发生unload事件时的Unix毫秒时间戳。
         *如果没有前一个网页,则等于fetchStart属性
         */
         let domLoaded = pt.domContentLoadedEventEnd - pt.navigationStart;
        /* onload时间
         *1.loadEventEnd
         *当前网页load事件的回调函数运行结束时的Unix毫秒时间戳。如果该事件还没有发生,返回0。
         */
        let onload = pt.loadEventEnd - pt.navigationStart;
        // 白屏时间,getStyleConfig接口返回时间 - 准备加载新页面的起始时间
        let white = window.dbStyleConfigEnd ? window.dbStyleConfigEnd - pt.navigationStart : "";
        let dbStyle = window.dbStyleConfigEnd - window.dbStyleConfigStart;
        let url = `/statistics/activityPagePerf?hdType=${CFG.appName}&oaId=${CFG.actId}&domComplete=${domComplete}&domLoaded=${domLoaded}&onload=${onload}&white=${white}&dbStyle=${dbStyle}`;
        

主要是查看指标值PAGET_页面加载时间,此指标指的是页面整体加载时间但不含(onload事件和redirect), 此指标值可直接反应用户体验, 从此项指标可以知道指定某时间段的页面加载速度值,以及和天,周,月的对比状况.

也可以查询指标ALLT_页面完全加载时间, 可以查询到从浏览器开始导航(用户点击链接或在地址栏输入url或点刷新,后退按钮)到页面onload 事件js完全跑完的所有时间.

如果发现页面加载速度有增加或减少,则可以分项查询前面的每个指标值,总的来说他们的关系如下:

1.dom开始加载前所有花费时间=重定向时间+域名解析时间+建立连接花费时间+请求花费时间+接收数据花费时间

2.pageLoadTime页面加载时间=域名解析时间+建立连接花费时间+请求花费时间+接收数据花费时间+解析dom花费时间+加载dom花费时间

3.allLoadTime页面完全加载时间=重定向时间+域名解析时间+建立连接花费时间+请求花费时间+接收数据花费时间+解析dom花费时间+加载dom花费时间+执行onload事件花费时间

4.resourcesLoadedTime资源加载时间=解析dom花费时间+加载dom花费时间

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/88302.html

相关文章

  • PerformanceTiming检测页面性能

    摘要:如果没有前一个网页,则等于属性。该事件在网页查询本地缓存之前发生。如果使用持久连接,则返回值等同于属性的值。返回当前网页结构生成时即属性变为,以及相应的事件发生时的毫秒时间戳。 window.performance.timing下的属性 navigationStart 当前浏览器窗口的前一个网页关闭,发生unload事件时的Unix毫秒时间戳。如果没有前一个网页,则等于fetchSta...

    pumpkin9 评论0 收藏0
  • PerformanceTiming检测页面性能

    摘要:如果没有前一个网页,则等于属性。该事件在网页查询本地缓存之前发生。如果使用持久连接,则返回值等同于属性的值。返回当前网页结构生成时即属性变为,以及相应的事件发生时的毫秒时间戳。 window.performance.timing下的属性 navigationStart 当前浏览器窗口的前一个网页关闭,发生unload事件时的Unix毫秒时间戳。如果没有前一个网页,则等于fetchSta...

    oliverhuang 评论0 收藏0
  • 使性能API快速分析web前端性能

    摘要:性能时间线以一个统一的接口获取由和所收集的性能数据。浏览器支持下表列举了当前主流浏览器对性能的支持,其中标注星号的内容并非来自于性能工作小组。 页面的性能问题一直是产品开发过程中的重要一环,很多公司也一直在使用各种方式监控产品的页面性能。从控制台工具、Fiddler抓包工具,到使用DOMContentLoaded和document.onreadystatechange这种侵入式java...

    mj 评论0 收藏0
  • 前端代码性能质量监测

    摘要:连接建立指的是所有握手和认证过程全部结束。发生错误的脚本字符串发生错误的行号数字发生错误的列号数字对象对象若该函数返回,则阻止执行默认事件处理函数。在某些浏览器中,通过在使用属性并要求服务器发送适当的响应头,该行为可被覆盖。 1.页面整体性能 通过浏览器提供的 window.performance.timing 方法,我们能够得到网页每个处理阶段的精确时间。打开一个页面后,这些信息会被...

    ?xiaoxiao, 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<