前段时间因为项目需要获取页面加载的时间,就去看了下HTML5中的performane。

可以用其获得页面详细的加载时间。

关于performance的详细内容可以查看 http://www.cnblogs.com/CraryPrimitiveMan/p/3795086.html

之后用performane写了一个小工具,用来获取页面详细的加载时间。

GitHub上的地址是:https://github.com/CraryPrimitiveMan/performance-tool

只在chrome中通过了测试。

将times.js引入想应的HTML中,打开console(按F12),刷新一下页面就可以看到详细的加载时间。 也可以在JS中使用times()方法调用。

其运行结果如下图

源码及注释如下

  1. var times = function() {
  2. var timing = performance.timing;
  3. var loadTime = timing.loadEventEnd - timing.navigationStart;//过早获取时,loadEventEnd有时会是0
  4. if(loadTime <= 0) {
  5. // 未加载完,延迟200ms后继续times方法,直到成功
  6. setTimeout(function(){
  7. times();
  8. }, 200);
  9. return;
  10. }
  11. var readyStart = timing.fetchStart - timing.navigationStart;
  12. var redirectTime = timing.redirectEnd - timing.redirectStart;
  13. var appcacheTime = timing.domainLookupStart - timing.fetchStart;
  14. var unloadEventTime = timing.unloadEventEnd - timing.unloadEventStart;
  15. var lookupDomainTime = timing.domainLookupEnd - timing.domainLookupStart;
  16. var connectTime = timing.connectEnd - timing.connectStart;
  17. var requestTime = timing.responseEnd - timing.requestStart;
  18. var initDomTreeTime = timing.domInteractive - timing.responseEnd;
  19. var domReadyTime = timing.domComplete - timing.domInteractive; //过早获取时,domComplete有时会是0
  20. var loadEventTime = timing.loadEventEnd - timing.loadEventStart;
  21.  
  22. // 为console.table方法准备对象,包含耗时的描述和消耗的时间
  23. var allTimes = [
  24. { "描述": "准备新页面时间耗时", "时间(ms)": readyStart },
  25. { "描述": "redirect 重定向耗时", "时间(ms)": redirectTime },
  26. { "描述": "Appcache 耗时", "时间(ms)": appcacheTime },
  27. { "描述": "unload 前文档耗时", "时间(ms)": unloadEventTime },
  28. { "描述": "DNS 查询耗时", "时间(ms)": lookupDomainTime },
  29. { "描述": "TCP连接耗时", "时间(ms)": connectTime },
  30. { "描述": "request请求耗时", "时间(ms)": requestTime },
  31. { "描述": "请求完毕至DOM加载", "时间(ms)": initDomTreeTime },
  32. { "描述": "解释dom树耗时", "时间(ms)": domReadyTime },
  33. { "描述": "load事件耗时", "时间(ms)": loadEventTime },
  34. { "描述": "从开始至load总耗时", "时间(ms)": loadTime }
  35. ];
  36. console.table(allTimes);
  37. }
  38. window.onload = times;// onload时,触发times方法

HTML5的学习--performance获取加载时间的工具的更多相关文章

  1. 通过chrome浏览器分析网页加载时间

    今天趁着下班的时间看了下chrome浏览器的网页加载时间分析工具和相关文档,简单写点儿东西记录一下. 以百度首页加载为例,分析下一张图片1.jgp(就是背景图)的加载时间 看右侧的Timing标签,从 ...

  2. selenium学习笔记11——driver.get(url) 页面加载时间太长

    在执行自动化测试用例过程中,发现因为网络慢或其他原因导致driver.get(url) 时,页面一直在加载,页面没有加载完成就不会去继续执行下面的动作,但是实际上需要操作的元素已经加载出来了. 解决方 ...

  3. selenium学习笔记——driver.get(url) 页面加载时间太长

    # 两个同时设置才行 # 实现效果:加载状态停止,进行代码下一步操作 driver.set_page_load_timeout(10) driver.set_script_timeout(10) # ...

  4. 利用Navigation Timing测量页面加载时间

    最近在看一本名为<web性能实践日志>的书籍,其中第十三章"网络计时"中介绍了一种比较新的计算页面各部分加载时间方法,这也是W3C Web性能工作小组正在做的事情,接下 ...

  5. selenium加载时间过长

    为了获取网站js渲染后的html,需要利用selenium加载网站,但是会出现加载时间过长的现象,因此可以限制其加载时间以及强制关掉加载: # !/usr/bin/python3.4 # -*- co ...

  6. 深入java虚拟机学习 -- 类的加载机制(续)

    昨晚写 深入java虚拟机学习 -- 类的加载机制 都到1点半了,由于第二天还要工作,没有将上篇文章中的demo讲解写出来,今天抽时间补上昨晚的例子讲解. 这里我先把昨天的两份代码贴过来,重新看下: ...

  7. 我是如何将页面加载时间从6S降到2S的?

    写在前面 生活在信息爆炸的今天,我们每天不得不面对和过滤海量的信息--无疑是焦躁和浮动的,这就意味着用户对你站点投入的时间可能是及其吝啬的(当然有一些刚需站点除外). 如何给用户提供迅速的响应就显得十 ...

  8. Selenium WebDriver- 指定页面加载时间

    #encoding=utf-8 import unittest import time from selenium import webdriver from selenium.webdriver i ...

  9. creator 2.0版本对于preloadScene函数获取加载进度

    有时候,当我们场景上挂载的资源过多时,我们使用cc.director.loadScene切换场景时会等一段时间才会切换过去,这对游戏的体验是相当不好的.所以我们可以使用cc.director.prel ...

随机推荐

  1. Android中的IntentService

    首先说下,其他概念:Android中的本地服务与远程服务是什么? 本地服务:LocalService 应用程序内部------startService远程服务:RemoteService androi ...

  2. C#常用代码集合(1)

    引用自james li的博客,地址:http://www.cnblogs.com/JamesLi2015/p/3147986.html   1 读取操作系统和CLR的版本   OperatingSys ...

  3. oracle 11g RAC public/virtual/SACN/private IP we need to know

    1.3.2.2 IP Address Requirements Before starting the installation, you must have at least two interfa ...

  4. IOS 跳转至AppStore的两种方式

    //第一种方法 直接跳转 id+编号 [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"itms-apps: ...

  5. JFinal 1.5 发布,JAVA极速WEB+ORM框架

    JFinal 爱好者一直都在问 JFinal 何时再次升级?JFinal 1.5 何时发布?以往升级都保持在每月近两次的频率,为何本次五个月过去了新版本还不出?由于作者暂时阔别码坛已有半年时间,一直无 ...

  6. 【转】MongoDB安全配置

    [转自]http://drops.wooyun.org/%E8%BF%90%E7%BB%B4%E5%AE%89%E5%85%A8/2470 0x00 MongoDB权限介绍 1.MongoDB安装时不 ...

  7. Kinect for Windows SDK 1.8的改进及新特性

    今年3月, 微软推出了Kinect for Windows SDK 1.7 更新,包括了手势识别 Kinect Interactions 和实时 3D 建模 Kinect Fusion 两项新技术. ...

  8. Linux Shell函数

    200 ? "200px" : this.width)!important;} --> 介绍 正文 $? $?是shell变量,表示"最后一次执行命令"的 ...

  9. 100天后 - 100-days-later

    赛斯·高汀(Seth Godin)的博客:  http://sethgodin.typepad.com/seths_blog/2013/04/100-days-later.html 面对着数以千计的图 ...

  10. hibernate HQL和Criteria

    package com.test; import java.util.Date; import java.util.List; import org.hibernate.Query; import o ...