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


Posted in Javascript onOctober 27, 2016

本篇文章介绍了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>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支

Javascript 相关文章推荐
JavaScript DOM 学习第二章 编辑文本
Feb 19 Javascript
简略说明Javascript中的= =(等于)与= = =(全等于)区别
Apr 16 Javascript
文档对象模型DOM通俗讲解
Nov 01 Javascript
深入探寻seajs的模块化与加载方式
Apr 14 Javascript
BootStrap 智能表单实战系列(十)自动完成组件的支持
Jun 13 Javascript
jQuery实现滚动效果
Nov 17 jQuery
使用mock.js随机数据和使用express输出json接口的实现方法
Jan 07 Javascript
nginx部署访问vue-cli搭建的项目的方法
Feb 12 Javascript
Vue监听一个数组id是否与另一个数组id相同的方法
Sep 26 Javascript
轻量级富文本编辑器wangEditor结合vue使用方法示例
Oct 10 Javascript
微信小程序列表中item左滑删除功能
Nov 07 Javascript
js根据需要计算数组中重复出现某个元素的个数
Jan 18 Javascript
js实现各种复制到剪贴板的方法(分享)
Oct 27 #Javascript
js复制内容到剪贴板代码,js复制代码的简单实例
Oct 27 #Javascript
微信小程序 定义全局数据、函数复用、模版等详细介绍
Oct 27 #Javascript
vue插件tab选项卡使用小结
Oct 27 #Javascript
JS实现用户注册时获取短信验证码和倒计时功能
Oct 27 #Javascript
微信小程序 action-sheet底部菜单详解
Oct 27 #Javascript
JS短信验证码倒计时功能的实现(没有验证码,只有倒计时)
Oct 27 #Javascript
You might like
Yii2框架中一些折磨人的坑
2019/12/15 PHP
对联广告js flash激活
2006/10/19 Javascript
ExtJs3.0中Store添加 baseParams 的Bug
2010/03/10 Javascript
IE6已终止操作问题的2种情况及解决
2014/04/23 Javascript
JavaScript数组函数unshift、shift、pop、push使用实例
2014/08/27 Javascript
Windows系统下使用Sublime搭建nodejs环境
2015/04/13 NodeJs
JavaScript实现DIV层拖动及动态增加新层的方法
2015/05/12 Javascript
JavaScript中exec函数用法实例分析
2015/06/08 Javascript
javascript 用函数实现继承详解
2016/05/28 Javascript
JS生成一维码(条形码)功能示例
2017/01/19 Javascript
jQuery实现通过方向键控制div块上下左右移动的方法【测试可用】
2018/04/26 jQuery
解决angularjs前后端分离调用接口传递中文时中文乱码的问题
2018/08/13 Javascript
Vue实现本地购物车功能
2018/12/05 Javascript
[07:57]2018DOTA2国际邀请赛寻真——PSG.LGD凤凰浴火
2018/08/12 DOTA
纯Python开发的nosql数据库CodernityDB介绍和使用实例
2014/10/23 Python
关于Tensorflow中的tf.train.batch函数的使用
2018/04/24 Python
Python实现微信好友的数据分析
2019/12/16 Python
Python with语句和过程抽取思想
2019/12/23 Python
django模型动态修改参数,增加 filter 字段的方式
2020/03/16 Python
Python作用域与名字空间原理详解
2020/03/21 Python
Django数据结果集序列化并展示实现过程
2020/04/22 Python
Python实现Canny及Hough算法代码实例解析
2020/08/06 Python
python 读取、写入txt文件的示例
2020/09/27 Python
如何开发一款堪比APP的微信小程序(腾讯内部团队分享)
2016/12/22 HTML / CSS
CK巴西官方网站:Calvin Klein巴西
2019/07/19 全球购物
Farfetch澳大利亚官网:Farfetch Australia
2020/04/26 全球购物
大学生的应聘自我评价
2013/12/13 职场文书
留学生如何写好自荐信
2013/12/27 职场文书
项目施工员岗位职责
2014/03/09 职场文书
升学宴主持词
2014/04/02 职场文书
初一学生评语大全
2014/04/24 职场文书
法制宣传教育方案
2014/05/09 职场文书
乡镇干部先进性教育活动个人整改措施
2014/09/16 职场文书
质监局领导班子践行群众路线整改方案
2014/10/26 职场文书
2016年三八红旗手先进事迹材料
2016/02/26 职场文书
angular4实现带搜索的下拉框
2022/03/25 Javascript