摘要:只做页面性能数据的采集和上报,是比较完整和健全的数据上报插件,它可以帮你完成以下功能是比较完整和健全的数据上报插件,它可以帮你完成以下功能当前页面上一页面当前浏览器版本信息页面性能数据信息,例如页面加载时间,白屏时间,解析时间等当前页面
performance-report只做页面性能数据的采集和上报,是比较完整和健全的数据上报插件,它可以帮你完成以下功能: performance-report 是比较完整和健全的数据上报插件,它可以帮你完成以下功能:
github地址,如果你觉得对你有用的话欢迎给个star当前页面URL (data.page)
上一页面URL (data.preUrl)
当前浏览器版本信息 (data.appVersion)
页面性能数据信息 (data.performance),例如:页面加载时间,白屏时间,dns解析时间等
当前页面错误信息 (data.errorList) 包含(js,css,img,ajax,fetch 等错误信息)
当前页面所有资源性能数据 (data.resoruceList),例如ajax,css,img等资源加载性能数据
不用担心阻塞页面,压缩资源大小6kb,上报方式为异步上报
https://github.com/wangweiang...
完整前端性能监控系统:https://github.com/wangweiang... 使用方式1、下载 dist/performance-report.min.js 到本地
2、使用script标签引入到html的头部(备注:放到所有js资源之前)
3、使用performance函数进行数据的监听上报
参数说明performance test
Performance({ domain:"http://some.com/api", outtime:500, isPage:true, isResource:true, isError:true, filterUrl:["http://localhost:35729/livereload.js?snipver=1"] },(data)=>{ fetch("http://some.com/api",{type:"POST",body:JSON.stringify(result)}).then((data)=>{}) })
同时传入 domain和传入的function ,function优先级更高;
domain :上报api接口
outtime :上报延迟时间,保证异步数据的加载 (默认:1000ms)
isPage :是否上报页面性能数据 (默认:true)
isResource :是否上报页面资源性能数据 (默认:true)
isError :是否上报页面错误信息数据 (默认:true)
filterUrl :不需要上报的ajax请求 (例如开发模式下的livereload链接)
fn :自定义上报函数,上报方式可以用ajax可以用fetch (非必填:默认使用fetch)
错误处理:插件会处理所有的error信息并完成上报
错误处理分为4种类型
1.图片资源,js资源文本资源等资源错误信息 n="resource"
2.js报错,代码中的js报错 n="js"
3.ajax请求错误 n="ajax"
4.fetch请求错误 n="fetch"
AJAX处理:AJAX分为 XMLHttpRequest 和 Fetch的处理
AJAX兼容老板般与新版本 例如:jq的1.x版本与2.x版本以上需要做兼容处理
拦截所有fetch请求信息,遇到错误时收集并上报
所有资源信息处理:上报所有资源信息 资源类型以type来区分 type类型有
script:js脚本资源
img:图片资源
fetchrequest:fetch请求资源
xmlhttprequest:ajax请求资源
other :其他
运行方式git clone https://github.com/wangweianger/web-performance-report.git npm install //开发 npm run dev //打包 npm run build http://localhost:8080/test/ 页面测试单页面程序处理说明
对于单页面应用程序,只有第一次加载的页面性能数据有效,之后的路由跳转不会有页面的性能数据,因为需要的静态资源已经加载完成
如果新的路由有ajax请求或者fetch请求,会抓取所有新的请求数据并上报。
多页面应用程序不会受影响
返回参数说明参数名 | 描述 | 说明 |
---|---|---|
appVerfion | 当前浏览器信息 | |
page | 当前页面 | |
preUrl | 上一页面 | |
errorList | 错误资源列表信息 | |
->t | 资源时间 | |
->n | 资源类型 | resource,js,ajax,fetch,other |
->msg | 错误信息 | |
->method | 资源请求方式 | GET,POST |
->data->resourceUrl | 请求资源路径 | |
->data->col | js错误行 | |
->data->line | js错误列 | |
->data->status | ajax错误状态 | |
->data->text | ajax错误信息 | |
performance | 页面资源性能数据(单位均为毫秒) | |
->dnst | DNS解析时间 | |
->tcpt | TCP建立时间 | |
->wit | 白屏时间 | |
->domt | dom渲染完成时间 | |
->lodt | 页面onload时间 | |
->radt | 页面准备时间 | |
->rdit | 页面重定向时间 | |
->uodt | unload时间 | |
->reqt | request请求耗时 | |
->andt | 页面解析dom耗时 | |
resoruceList | 页面资源性能数据 | |
->decodedBodySize | 资源返回数据大小 | |
->duration | 资源耗时 | |
->method | 请求方式 | GET,POST |
->name | 请求资源路径 | |
->nextHopProtocol | http协议版本 | |
->type | 请求资源类型 | script,img,fetchrequest,xmlhttprequest,other |
{ "page": "http://localhost:8080/test/", "preUrl": "", "appVersion": "5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36", "errorList": [ { "t": 1523948635259, "n": "js", "msg": "ReferenceError: wangwei is not defined at http://localhost:8080/test/:64:15", "data": { "resourceUrl": "http://localhost:8080/test/", "line": 64, "col": 15 }, "method": "GET" }, { "t": 1523948635330, "n": "resource", "msg": "img is load error", "data": { "target": "img", "type": "error", "resourceUrl": "http://img1.imgtn.bd95510/" }, "method": "GET" }, { "t": 1523948635405, "n": "ajax", "msg": "ajax请求错误", "data": { "resourceUrl": "", "text": "", "status": 0 } }, { "t": 1523948635425, "n": "fetch", "msg": "fetch请求错误", "data": { "resourceUrl": "http://mock-api.seosiwei.com/guest/order/api/order/getOrde", "text": "TypeError: Failed to fetch", "status": 0 }, "method": "POST" } ], "performance": { "dnst": 0, "tcpt": 0, "wit": 17, "domt": 239, "lodt": 904, "radt": 8, "rdit": 0, "uodt": 0, "reqt": 23, "andt": 645 }, "resourceList": [ { "name": "https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js", "method": "GET", "type": "script", "duration": "0.00", "decodedBodySize": 0, "nextHopProtocol": "h2" }, { "name": "https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=295864288,1887240069&fm=27&gp=0.jpg", "method": "GET", "type": "img", "duration": "0.00", "decodedBodySize": 0, "nextHopProtocol": "http/1.1" }, { "name": "http://mock-api.seosiwei.com/guest/home/api/shop/getHomeInitInfo", "method": "GET", "type": "fetchrequest", "duration": "157.10", "decodedBodySize": 0, "nextHopProtocol": "http/1.1" }, { "name": "http://mock-api.seosiwei.com/guest/order/api/order/getOrder", "method": "POST", "type": "xmlhttprequest", "duration": "148.40", "decodedBodySize": 0, "nextHopProtocol": "http/1.1" } ] }
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/94328.html
摘要:如何在新的技术背景下让前端数据采集工作更加完善高效,是本文讨论的重点。具体来说,我们对前端的数据采集具体主要分为路由切换性能资源错误日志上报路由切换等前端技术的快速发展使单页面应用盛行。 随着业务的快速发展,我们对生产环境下的问题感知能力越来越关注。作为距离用户最近的一层,前端的表现是否可靠、稳定、好用,很大程度上决定着用户对整个产品的体验和感受。因此,对于前端的监控不容忽视。 搭建一...
摘要:参考一步一步搭建前端监控系统错误监控篇用插件记录网络请求异常关于专注于微信小程序微信小游戏支付宝小程序和线上应用实时监控。 摘要: 如何监控HTTP请求错误? 作者:一步一个脚印一个坑 原文:搭建前端监控系统(四)接口请求异常监控篇 Fundebug经授权转载,版权归原作者所有。 背景:市面上的监控系统有很多,大多收费,对于小型前端项目来说,必然是痛点。另一点主要原因是,功能虽然...
摘要:另外这样的异常捕获不能捕获的异常错误信息,这点需要注意。最终大致的流程图如下结语前端异常捕获与上报是前端异常监控的前提,了解并做好了异常数据的收集和分析才能实现一个完善的错误响应和处理机制,最终达成数据可视化。 关于 微信公众号:前端呼啦圈(Love-FED) 我的博客:劳卜的博客 知乎专栏:前端呼啦圈 前言 Hello,大家好,又与大家见面了,这次给大家分享下前端异常监控中需...
摘要:摘要通过记录用户行为,快速复现场景。这是搭建前端监控系统的第二章,主要是介绍如何统计报错,跟着我一步步做,你也能搭建出一个属于自己的前端监控系统。 摘要: 通过记录用户行为,快速复现BUG场景。 作者:一步一个脚印一个坑 原文:搭建前端监控系统(备选)用户行为统计和监控篇(如何快速定位线上问题) Fundebug经授权转载,版权归原作者所有。 一步一步搭建前端监控系统系列博客: ...
摘要:本文的介绍的是如何设计一个通用的可以以较小的侵入性,自动上报前端的性能数据。具体的做法可以看我的上一篇文章在单页应用中,如何优雅的监听的变化。三如何上报性能数据那么如何上报性能数据呢,我们第一反应就是通过请求的形式来上报前端性能数据。 最近在做一个较为通用的前端性能监控平台,区别于前端异常监控,前端的性能监控主要需要上报和展示的是前端的性能数据,包括首页渲染时间、每个页面的白屏时...
阅读 1636·2021-09-26 09:55
阅读 1370·2021-09-23 11:22
阅读 2724·2021-09-06 15:02
阅读 2639·2021-09-01 11:43
阅读 3950·2021-08-27 13:10
阅读 3675·2021-08-12 13:24
阅读 2069·2019-08-30 12:56
阅读 2991·2019-08-30 11:22