加入收藏 | 设为首页 | 会员中心 | 我要投稿 威海站长网 (https://www.0631zz.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营中心 > 建站资源 > 优化 > 正文

深入理解前端性能监控

发布时间:2019-04-09 18:50:08 所属栏目:优化 来源:腾讯新闻前端团队
导读:在同样的网络环境下,有两个同样能满足你的需求的网站,一个唰的一下就加载出来了,另一个白屏转圈转了半天内容才出来,如果让你选择,你会用哪一个? 页面的性能问题是前端开发中一个重要环节,但一直以来我们没有比较好的手段,来检测页面的性能。直到W3

mark方法用来自定义添加标记时间。使用方法如下: 

  1. var nameStart = 'markStart';  
  2.    var nameEnd   = 'markEnd';  
  3.    // 函数执行前做个标记  
  4.    window.performance.mark(nameStart);  
  5.    for (var i = 0; i < n; i++) {  
  6.        doSomething  
  7.    }  
  8.    // 函数执行后再做个标记  
  9.    window.performance.mark(nameEnd);  
  10.    // 然后测量这个两个标记间的时间距离,并保存起来  
  11.    var name = 'myMeasure';  
  12.    window.performance.measure(name, nameStart, nameEnd); 

保存后的值可以通过 performance.getEntriesByname( 'myMeasure' )或者 performance.getEntriesByType('measure')查询。

Performance.clearMeasures()

从浏览器的性能输入缓冲区中移除自定义添加的 measure

Performance.getEntriesByName()

返回一个 PerformanceEntry 对象的列表,基于给定的 name 和 entry type

Performance.getEntriesByType()

返回一个 PerformanceEntry 对象的列表,基于给定的 entry type

Performance.measure()

在浏览器的指定 start mark 和 end mark 间的性能输入缓冲区中创建一个指定名称的时间戳,见上例

Performance.toJSON()

是一个 JSON 格式转化器,返回 Performance 对象的 JSON 对象

资源缓冲区监控

Performance.setResourceTimingBufferSize()

设置当前页面可缓存的最大资源数据个数,entryType为resource的资源数据个数。超出时,会清空所有entryType为resource的资源数据。参数为整数(maxSize)。配合performance.onresourcetimingbufferfull事件可以有效监控资源缓冲区。当entryType为resource的资源数量超出设置值的时候会触发该事件。

Performance.clearResourceTimings()

从浏览器的性能数据缓冲区中移除所有的 entryType 是 "resource" 的 performance entries

下面是mdn上关于这个属性的一个demo。这个demo的主要内容是当缓冲区内容满时,调用buffer_full函数。

  1. function buffer_full(event) {  
  2.   console.log("WARNING: Resource Timing Buffer is FULL!");  
  3.   performance.setResourceTimingBufferSize(200);  
  4. }  
  5. function init() {  
  6.   // Set a callback if the resource buffer becomes filled  
  7.   performance.onresourcetimingbufferfull = buffer_full;  
  8. }  
  9. <body onload="init()"> 

使用performance的这些属性和方法,能够准确的记录下我们想要的时间,再加上日志采集等功能的辅助,我们就能很容易的掌握自己网站的各项性能指标了。

兼容性

目前主流浏览器虽然都已支持performance对象,但是并不能支持它上面的全部属性和方法,有些细微的差别。本文主要依据chrome和qq浏览器测试了相关属性和方法,均可使用。

我们做了什么?(划重点)

(编辑:威海站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读