Performance --- 前端性能监控

2020-11-16  本文已影响0人  海布里的冬季

一、什么是performance

performance可以获取到当前页面中与性能相关的信息,可以检测到白屏时间、首屏时间、用户可操作的时间节点、页面总下载的时间、DNS查询的时间、TCP链接的时间等。

二、前端性能主要测试点

新建个demo.html

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>performance演示</title>
</head>
<body>
  <script>
    var performance = window.performance || window.msPerformance || window.webkitPerformance
    if (performance) {
      console.log(performance)
    }
  </script>
</body>
</html>

此时在控制台打印出如下信息

image.png

其中 memory 是和内存相关的,navigation 是指来源相关的,timing是关键点时间。

三、测试点代码

重定向耗时 = redirectEnd - redirectStart
DNS查询耗时 = domainLookupEnd - domainLookupStart
TCP链接耗时 = connectEnd - connectStart
HTTP请求耗时 = responseEnd - responseStart
解析dom树耗时 = domComplete - domInteractive
白屏时间 = responseStart - navigationStart
DOMready时间 = domContentLoadedEventEnd - navigationStart
onload时间 = loadEventEnd - navigationStart

1、封装计算方式

function getPerformanceTiming() {
    var performance = window.performance
  if (!performance) {
    console.log('你的浏览器不支持performance属性')
    return
  }
  var t = performance.timing
  var obj = {
    timing: performance.timing
  }
  // 重定向耗时
  obj.redirectTime = t.redirectEnd - t.redirectStart
  
  // DNS查询耗时
  obj.lookupDomainTime = t.domainLookupEnd - t.domainLookupStart
  
  // TCP链接耗时
  obj.connectTime = t.connectEnd - t.connectStart
  
  // HTTP请求耗时
  obj.requestTime = t.responseEnd - t.responseStart
  
  // 解析dom树耗时
  obj.domReadyTime = t.domComplete - t.domInteractive
  
  // 白屏时间耗时
  obj.whiteTime = t.responseStart - t.navigationStart
  
  // DOMready时间
  obj.domLoadTime = t.domContentLoadedEventEnd - t.navigationStart
  
  // 页面加载完成的时间:即onload时间
  obj.loadTime = t.loadEventEnd - t.navigationStart
  
  return obj
}

var obj = getPerformanceTiming()
console.log(obj)
上一篇 下一篇

猜你喜欢

热点阅读