我们都知道浏览器从打开 url 到整个页面渲染完成,中间的过程,大致是 DOM 解析,CSSOM 解析,JS 解析,渲染。网上关于这些内容的文章也很多了,本文不再赘述。

今天主要介绍 performance 这个衡量页面加载性能的工具。

performance 有好几个属性,但是由于浏览器支持程度不同,我们主要用到的是支持最广泛,最常用的 performance.timing 这个属性。

performance.timing 主要属性如下:
这些属性记录的都是时间戳

navigationStart: 1500979373880,    // 地址栏输入 url 回车之后,或者用户点击链接开始打开 href 时
unloadEventStart: 0,    // 前一个页面触发 unload 时间时,和当前页面同源时才统计
unloadEventEnd: 0,      // 前一个页面 unload 事件处理函数结束时,和当前页面同源时才统计
redirectStart: 0,       // 重新向到当前页面时,同源才统计
redirectEnd: 0,         // 重定向结束时,同源才统计
fetchStart: 1500979373880,    // 开始请求页面
domainLookupStart: 1500979373880,    // 开始解析域名,如果是本地有 DNS 缓存,或者使用 http-alive 复用 TCP 连接,则此属性值和 fetchStart 相同
domainLookupEnd: 1500979373880,    // 域名解析结束时,如果是本地有 DNS 缓存,或者使用 http-alive 复用 TCP 连接 ,则此属性值和 fetchStart 相同
connectStart: 1500979373886,       // 开始向服务器请求建立连接
secureConnectionStart: 0,          // 开始进行 SSL 连接,不走 HTTPS 这个属性值为0
connectEnd: 1500979373887,         // 连接建立完毕
requestStart: 1500979373887,       // 开始向服务器发起请求
responseStart: 1500979374433,      // 服务器开始响应请求
responseEnd: 1500979374540,        // 服务器可能会采用流式响应,或者分片传输。这个属性表示浏览器接收到完整页面的时刻
domLoading: 1500979374442,        // 开始解析 DOM, 此时 document.readyState 变成 loading
domInteractive: 1500979375806,    // DOM 树解析完成,此时 document.readyState 变成 interactive,可以在 JS 里面访问 DOM 了,但此时 JS 未必解析执行完毕了
domContentLoadedEventStart: 1500979375806,    // JS 也解析执行完了(不包括 async 加载的 JS),触发 DOMContentLoaded 事件
domContentLoadedEventEnd: 1500979375827,      // DOMContentLoaded 事件结束
domComplete: 1500979376043,                   // 页面内资源全部加载完毕(比如图片、音视频),JS 解析完毕,此时 document.readyState 变为 complete
loadEventStart: 1500979376043,    // 触发 onload 事件
loadEventEnd:1500979376049        // onload 事件结束

拿到这些节点的时间戳之后,各个阶段的耗时就能知道了
如果我们把 JS 放在 </body> 前面,那么 JS 执行耗时为 domContentLoadedEventStart - domInteractive

DOM 和 CSS 解析渲染耗时:domInteractive - domLoading

白屏时间:domLoading - navigationStart

另外,目前我们比较多的用 react vue 等框架,经常在加载 JS 之后生成虚拟 DOM 再挂载到页面上,这种情况,DOM 渲染完毕就需要我们手动埋点了,比如在 Vue 的跟组件 mounted() 钩子中埋点。

performance 查看页面性能相关推荐

  1. 浏览器中的performance检测页面性能

    主要有4方面:(对照下图) 1.控制按钮. 2.overview.页面性能的高级汇总(FPS:帧率,CPU:CPU占用,NET:网络请求) 3.火焰图.CPU堆叠追踪的可视化(左侧名称是主线程的各种事 ...

  2. 前端如何查看页面性能

    现在讲的最多的就是前端性能优化,手段五花八门,但是首先 怎么量化优化的效果,首屏从10s 优化的1s , 怎么查看 ? 前端性能最简单的量化指标 ,白屏时间,首屏时间. 白屏时间 网上互相参考的,都是 ...

  3. 在idea做项目时 在进行模糊查询的时候页面为什么拿不到值_深入浅出Performance工具解决Web页面性能问题

    前言 Performance 一个在前端开发领域中,无法被忽视的存在,如果我们的开发是一个满足需求就可以的产品,那么可能就用不到它:但是如果我们想对我们的这个产品,做一个极致的优化,那么 Perfor ...

  4. 页面性能的基础因素 - 《Designing for Performance》

    页面性能的基础因素 最近读这本小书Designing for Performance,突然想到之前一篇网络性能评价只写了一半,在这里也里也算一个做个补充. 考虑页面性能可以从两种场景,第一个场景也是因 ...

  5. 雅虎团队经验:网站页面性能优化的 34条黄金守则

    1.尽量减少HTTP请求次数      终端用户响应的时间中,有80%用于下载各项内容.这部分时间包括下载页面中的图像.样式表.脚本.Flash等.通过减少页面中的元素可以减少HTTP请求的次数.这是 ...

  6. 雅虎网站页面性能优化的34条黄金守则 收藏

    1.尽量减少HTTP请求次数      终端用户响应的时间中,有80%用于下载各项内容.这部分时间包括下载页面中的图像.样式表.脚本.Flash等.通过减少页面中的元素可以减少HTTP请求的次数.这是 ...

  7. link标签的几个用法,帮助提高页面性能

    写在前面 本文首发于公众号:符合预期的CoyPan HTML 中****元素规定了外部资源与当前文档的关系.最常见的用法,是用来链接一个外部的样式表,比如: <link href="m ...

  8. 雅虎网站页面性能优化的34条黄金守则(转)

    2019独角兽企业重金招聘Python工程师标准>>> 雅虎团队经验:网站页面性能优化的34条黄金守则 1.尽量减少HTTP请求次数       终端用户响应的时间中,有80%用于下 ...

  9. 前端-页面性能调试:Hiper

    前端-页面性能调试:Hiper 我们写单页面应用,想看页面修改后性能变更其实挺繁琐的.有时想知道是「正优化」还是「负优化」只能靠手动刷新查看network.而Hiper很好解决了这一痛点(其实Hipe ...

最新文章

  1. iOS Block实现探究
  2. 《深入浅出MySQL:数据库开发、优化与管理维护(第2版)》一一第 1 章  MySQL的安装与配置...
  3. HDU_1075 What Are You Talking About(Trie 树)
  4. 前端JS通过Ajax下载后端返回的Excel文档
  5. MySQL Timeout解析
  6. LaTeX 总决式 | 重剑无锋,大巧不工
  7. 性能优化—代码层面优化
  8. 使用selenium控制滚动条(非整屏body)
  9. 用户(三次)登录--作业小编完成
  10. 企业项目开发中的问题
  11. json接收与发送(转自csdnblog)
  12. Gradle项目同步失败错误
  13. 软件行业正面临一场新的变革——SaaS软件
  14. Mission Planner 全部参数树设置及常见问题
  15. 【UCOSIII操作系统】硬件初始化篇(1)硬件初始化以及开始运行系统
  16. ISIS 协议 概述
  17. 用最通俗易懂的代码帮助新手理解javascript闭包
  18. 解决方案:LoadLibrary加载动态库失败,错误代码126
  19. 带你认识SSD的SATA、mSATA 、PCIe和M.2四种主流接口。联想g31t-lm2主板接线图
  20. 常用的几个测试网络连接的命令

热门文章

  1. Docker介绍与安装使用(一)
  2. EMV内核使用中的常见问题
  3. CSS3 box flex 布局
  4. JSF, MyFaces, RichFaces 和 Facelets的区别
  5. linux主机load average的概念计算过程注意事项
  6. asp.net 获取ip的方法
  7. concurrent: ThreadPoolExecutor 用法
  8. Spring事务的传播行为和隔离级别
  9. 感受JTable 与 JTableModel
  10. 华为鸿蒙备胎转正,华为鸿蒙是备胎系统,但已经实现上网随时能转正?