一般我们可以通过浏览器的调试工具-网络面板,或者代理工具查看网页加载过程中的各个阶段的耗时。而利用window.performance属性则可以获得更为精确的原始数据,以毫秒为单位,精确到微秒。

performance.timing属性介绍

图片说明如下:

属性说明:

  • navigationStart:浏览器处理当前网页的启动时间
  • fetchStart:浏览器发起http请求读取文档的毫秒时间戳。
  • domainLookupStart:域名查询开始时的时间戳。
  • domainLookupEnd:域名查询结束时的时间戳。
  • connectStart:http请求开始向服务器发送的时间戳。
  • connectEnd:浏览器与服务器连接建立(握手和认证过程结束)的毫秒时间戳。
  • requestStart:浏览器向服务器发出http请求时的时间戳。或者开始读取本地缓存时。
  • responseStart:浏览器从服务器(或读取本地缓存)收到第一个字节时的时间戳。
  • responseEnd:浏览器从服务器收到最后一个字节时的毫秒时间戳。
  • domLoading:浏览器开始解析网页DOM结构的时间。
  • domInteractive:网页dom树创建完成,开始加载内嵌资源的时间。
  • domContentLoadedEventStart:网页DOMContentLoaded事件发生时的时间戳。
  • domContentLoadedEventEnd:网页所有需要执行的脚本执行完成时的时间,domReady的时间。
  • domComplete:网页dom结构生成时的时间戳。
  • loadEventStart:当前网页load事件的回调函数开始执行的时间戳。
  • loadEventEnd:当前网页load事件的回调函数结束运行时的时间戳。

性能数据分析

1.DNS寻址时间:t.domainLookupEnd - t.domainLookupStart。

优化方法:检查页面是否添加了DNS预解析代码。

<link rel="dns-prefetch" href="//haitao.nosdn1.127.net">

是否合理利用域名发散与域名收敛的策略。

2.TCP连接耗时:t.connectEnd - t.connectStart。

3 首包时间: t.responseStart - t.navigationStart。

优化方法:是否加cdn,数据可否静态化等。

4.request请求耗时:t.responseEnd - t.requestStart。

优化方法:返回内容是否已经压缩过,静态资源是否打包好等。

5.白屏时间。

白屏时间是最影响用户体验的,时间越久,用户等待就越久。

6.解析DOM树结构的时间:t.domComplete - t.domLoading。

优化方法:检查dom节点是否过多,dom是否嵌套过深。

7.页面加载完成的时间:t.loadEventEnd - t.fetchStart。

优化方法:考虑延迟加载,懒加载,部分加载,减少首屏渲染时间。

方法

performance.getEntries():每个资源请求的时间数据。

performance.now() 计算网页从performance.timing.navigationStart到当前时间的毫秒数。

精确计算某个操作,或某个方法执行的耗时。

var start = performance.now();
dosomething();
var end = performance.now();
var time = end - start;
console.log('耗时' + time + '毫秒。');

或者console.time('aa'),console.timeEnd('aa')计算。

performance.mark()给相应的视点做标记。结合performance.measure()使用也可以算出各个时间段的耗时。

执行下列代码可以查看页面加载各个阶段的耗时。

function getTimes(){
var t = performance.timing;
var timing = {
domainLookupTime: t.domainLookupEnd - t.domainLookupStart,
TCPConnectTime: t.connectEnd - t.connectStart,
ttfb: t.responseStart - t.navigationStart,
requestTime: t.responseEnd - t.requestStart,
waitTime: t.domLoading - t.navigationStart,
renderDomTime: t.domComplete - t.domLoading,
loadPageTime: t.loadEventEnd - t.fetchStart
}
console.log(timing);
}
getTimes();
参考资料:

http://javascript.ruanyifeng.com/bom/performance.html

https://developer.mozilla.org/zh-CN/docs/Web/API/Performance

https://www.w3.org/TR/navigation-timing/#sec-window.performance-attribute

http://www.alloyteam.com/2015/09/explore-performance/

利用performance属性查看网页性能的更多相关文章

  1. 使用performance进行网页性能监控

    由于项目需要, 需要对网页的一些性能进行监控, 接触到了performance, window.performance 提供了一组精确的数据,经过简单的计算就能得出一些网页性能数据, 将这些数据存储为 ...

  2. 【译文】使用webpack提高网页性能优化

    这篇文章原文来自https://developers.google.com/web/fundamentals/performance/webpack/. 说是译文其实更像是笔者做的笔记,如有错误之处请 ...

  3. Performance Monitor1:开始性能监控

    Performance Monitor是Windows内置的一个可视化监控工具,能够在OS级别上实时记录系统资源的使用情况,通过收集和存储日志数据,在SQL Server发生异常时,能够还原系统当时的 ...

  4. 利用DIV+CSS制作网页过程中常用的基本概念及标签使

    CSS主要用于对HTML文件功能的补充及扩展,其作用就是对HTML文件中各种排版进行设置,达到对网页中字体.颜色.背景.图片等的控制,使网页能够完全依照设计者的想法来显示. CSS可以控制网页的显示, ...

  5. 利用Crowbar抓取网页异步加载的内容 [Python俱乐部]

    利用Crowbar抓取网页异步加载的内容 [Python俱乐部] 利用Crowbar抓取网页异步加载的内容 在做 Web 信息提取.数据挖掘的过程中,一个关键步骤就是网页源代码的获取.但是出于各种原因 ...

  6. 利用DIV+CSS制作网页过程中常用的基本概念及标签使用细节

    CSS主要用于对HTML文件功能的补充及扩展,其作用就是对HTML文件中各种排版进行设置,达到对网页中字体.颜色.背景.图片等的控制,使网页能够完全依照设计者的想法来显示. CSS可以控制网页的显示, ...

  7. http网页性能最佳实践

    你愿意为打开一个网页等待多长时间?我一秒也不愿意等.但是事实上大多数网站在响应速度方面都让人失望.现在越来越多的人开始建立自己的网站,博客,你的网页响应速度如何呢?在这篇文章中我们来介绍一下提高网页性 ...

  8. HTTP/2 服务器推送(Server Push)教程(HTTP/2 协议的主要目的是提高网页性能,配置Nginx和Apache)

    HTTP/2 协议的主要目的是提高网页性能. 头信息(header)原来是直接传输文本,现在是压缩后传输.原来是同一个 TCP 连接里面,上一个回应(response)发送完了,服务器才能发送下一个, ...

  9. 利用@media screen实现网页布局的自适应

    利用@media screen实现网页布局的自适应 优点:无需插件和手机主题,对移动设备友好,能够适应各种窗口大小.只需在CSS中添加@media screen属性,根据浏览器宽度判断并输出不同的长宽 ...

随机推荐

  1. 如何通过js跨域调用ASP.NET Web API (请问如何实现在javascript中通过http get的方式跨域调用ASP.NET Web API?)

    客户端js无需任何专门设置,使用通常的ajax调用即可: $.ajax({ url: '跨域URL', type: 'get', dataType: 'json', success: function ...

  2. ASP.NET处理301重定向方法 带示例 (demo)

    System.Web.HttpContext.Current.Response.Status = "301 Moved Permanently"; System.Web.HttpC ...

  3. 使用CSS3滤镜让图片反转颜色

    CSS提供的滤镜也是一大亮点,我一直痴迷其中,有些滤镜的效果很有用,可是有些的滤镜效果可能只是为了玩玩儿,CSS常见的滤镜有这些:grayscale, blur, sepia,所有常见的过滤器.但是如 ...

  4. BIEE使用技巧

    索引: 1.如何清除缓存 2.通过“编辑 SQL”取得前一天的日期 3.格式化日历框参数 4.根据传入的开始时间和结束时间取得事实表中的指标(用到了3中的技巧) 5.直接调用数据库函数 6.时间格式转 ...

  5. Highcharts使用简例 + 异步动态读取数据

    第一部分:在head之间加载两个JS库. <script src="html/js/jquery.js"></script> <script src= ...

  6. x01.os.11: IPC 路线图

    学习的最好方法就是看代码,所以我们不妨跟着 IPC 的调用路线图,来学习学习 IPC. 从 x01.Lab.Download 下载代码后,首先进入 main.c 文件,在 TestA 中,有这么一句: ...

  7. 查看linux系统,服务,配置文件被修改的时间

    如何查看服务启动时间 [root@qike /]# ps -ef |grep nginx root 14730 1 0 16:45 ? 00:00:00 nginx: master process / ...

  8. 网络错误定位案例 ICMP host *** unreachable - admin prohibited

    1. 环境 一台物理服务器 9.115.251.86,上面创建两个虚机,每个虚机两个网卡: vm1:eth0 - 9.*.*.232 eth1:10.0.0.14 vm2: eth0 - 9.8.*. ...

  9. [麦先生]Laravel框架实现发送短信验证

    今天在做到用户注册和个人中心的安全管理时,我借助实现第三方短信平台在Laravel框架中进行手机验证的设置;  由于我们做的是一个为客户提供医疗咨询和保健品网站,所以对客户个人隐私的保护显得尤为重要, ...

  10. PHP中文名文件下载实现

    php下载文件的流程: 其实就是给予一个链接:  <a href="指向处理文件的地址"></a> 这样,当前端点击链接的时候,指向处理文件,比如downl ...