使用Javascript监控前端相关数据的代码

作者:chenpingzhao 时间:2024-04-17 09:43:02 

本篇文章介绍了Javascript监控前端相关数据,项目开发完成外发后,没有一个监控系统,我们很难了解到发布出去的代码在用户机器上执行是否正确,所以需要建立前端代码性能相关的监控系统。

所以我们需要做以下的一些模块:

一、收集脚本执行错误


function error(msg,url,line){
 var REPORT_URL = "xxxx/cgi"; // 收集上报数据的信息
 var m =[msg, url, line, navigator.userAgent, +new Date];// 收集错误信息,发生错误的脚本文件网络地址,用户代理信息,时间
 var url = REPORT_URL + m.join('||');// 组装错误上报信息内容URL
 var img = new Image;
 img.onload = img.onerror = function(){
  img = null;
 };
 img.src = url;// 发送数据到后台cgi
}
// 监听错误上报
window.onerror = function(msg,url,line){
 error(msg,url,line);
}

通过管理后台系统,我们可以看到页面上每次错误的信息,通过这些信息我们可以很快定位并且解决问题。

 二、收集html5 performance信息

performance 包含页面加载到执行完成的整个生命周期中不同执行步骤的执行时间。performance相关文章点击如下:使用performance API 监测页面性能

计算不同步骤时间相对于navigationStart的时间差,可以通过相应后台CGI收集。


function _performance(){
 var REPORT_URL = "xxxx/cgi?perf=";
 var perf = (window.webkitPerformance ? window.webkitPerformance : window.msPerformance ),
  points = ['navigationStart','unloadEventStart','unloadEventEnd','redirectStart','redirectEnd','fetchStart','domainLookupStart','connectStart','requestStart','responseStart','responseEnd','domLoading','domInteractive','domContentLoadedEventEnd','domComplete','loadEventStart','loadEventEnd'];
 var timing = pref.timing;
 perf = perf ? perf : window.performance;
 if( perf && timing ) {
  var arr = [];
  var navigationStart = timing[points[0]];
  for(var i=0,l=points.length;i<l;i++){
    arr[i] = timing[points[i]] - navigationStart;
  }
 var url = REPORT_URL + arr.join("-");
 var img = new Image;
 img.onload = img.onerror = function(){
  img=null;
 }
 img.src = url;
}

通过后台接口收集和统计,我们可以对页面执行性能有很详细的了解。

三、统计每个页面的JS和CSS加载时间

在JS或者CSS加载之前打上时间戳,加载之后打上时间戳,并且将数据上报到后台。加载时间反映了页面白屏,可操作的等待时间。


<script>var cssLoadStart = +new Date</script>
<link rel="stylesheet" href="xxx.css" type="text/css" media="all">
<link rel="stylesheet" href="xxx1.css" type="text/css" media="all">
<link rel="stylesheet" href="xxx2.css" type="text/css" media="all">
<sript>
 var cssLoadTime = (+new Date) - cssLoadStart;
 var jsLoadStart = +new Date;
</script>
<script type="text/javascript" src="xx1.js"></script>
<script type="text/javascript" src="xx2.js"></script>
<script type="text/javascript" src="xx3.js"></script>
<script>
 var jsLoadTime = (+new Date) - jsLoadStart;
 var REPORT_URL = 'xxx/cgi?data='
 var img = new Image;
 img.onload = img.onerror = function(){
  img = null;
 };
 img.src = REPORT_URL + cssLoadTime + '-' + jsLoadTime;
</script>
标签:前端,监控,js
0
投稿

猜你喜欢

  • javascript实现九宫格相加数值相等

    2024-04-17 10:32:53
  • vue基础之面包屑和标签tag详解

    2024-05-28 15:42:43
  • Oracle中sys和system的区别小结

    2009-11-10 20:36:00
  • Goland 2020或2019软件版本去掉a...或fmt...提示的方法

    2024-04-25 15:06:44
  • Python字典 dict几种遍历方式

    2023-01-14 19:48:28
  • 高性能WEB开发 JS、CSS的合并、压缩、缓存管理

    2023-01-02 11:03:26
  • MySQL备份与恢复之热备(3)

    2024-01-21 04:50:04
  • javascript 获取中文字符串长度

    2009-10-18 12:06:00
  • 自然语言处理NLP TextRNN实现情感分类

    2022-01-20 11:14:47
  • Python爬虫之Selenium多窗口切换的实现

    2021-09-25 17:48:48
  • ASP中ServerVariables集合用法详解

    2007-09-14 10:26:00
  • MySQL中的 Binlog 深度解析及使用详情

    2024-01-19 04:15:48
  • 网页设计布局原则

    2010-04-20 17:18:00
  • python3编写ThinkPHP命令执行Getshell的方法

    2023-10-04 14:17:15
  • php中让上传的文件大小在上传前就受限制的两种解决方法

    2023-10-25 17:53:12
  • mysql中的临时表如何使用

    2024-01-28 10:19:21
  • Python学习笔记之函数的定义和作用域实例详解

    2021-09-09 11:05:30
  • Mysql数据库实现多字段过滤的方法

    2024-01-16 11:35:48
  • SQL Server比较常见数据类型详解

    2024-01-26 11:28:48
  • Python如何读写CSV文件

    2023-03-23 08:41:13
  • asp之家 网络编程 m.aspxhome.com