资讯专栏INFORMATION COLUMN

performance-report页面性能、资源、错误、ajax,fetch请求上报插件 完善小巧

testbird / 3116人阅读

摘要:只做页面性能数据的采集和上报,是比较完整和健全的数据上报插件,它可以帮你完成以下功能是比较完整和健全的数据上报插件,它可以帮你完成以下功能当前页面上一页面当前浏览器版本信息页面性能数据信息,例如页面加载时间,白屏时间,解析时间等当前页面

performance-report只做页面性能数据的采集和上报,是比较完整和健全的数据上报插件,它可以帮你完成以下功能: performance-report 是比较完整和健全的数据上报插件,它可以帮你完成以下功能:

当前页面URL (data.page)

上一页面URL (data.preUrl)

当前浏览器版本信息 (data.appVersion)

页面性能数据信息 (data.performance),例如:页面加载时间,白屏时间,dns解析时间等

当前页面错误信息 (data.errorList) 包含(js,css,img,ajax,fetch 等错误信息)

当前页面所有资源性能数据 (data.resoruceList),例如ajax,css,img等资源加载性能数据

不用担心阻塞页面,压缩资源大小6kb,上报方式为异步上报

github地址,如果你觉得对你有用的话欢迎给个star

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

相关文章

  • 让前端监控数据采集更高效

    摘要:如何在新的技术背景下让前端数据采集工作更加完善高效,是本文讨论的重点。具体来说,我们对前端的数据采集具体主要分为路由切换性能资源错误日志上报路由切换等前端技术的快速发展使单页面应用盛行。 随着业务的快速发展,我们对生产环境下的问题感知能力越来越关注。作为距离用户最近的一层,前端的表现是否可靠、稳定、好用,很大程度上决定着用户对整个产品的体验和感受。因此,对于前端的监控不容忽视。 搭建一...

    Half 评论0 收藏0
  • 一步一步搭建前端监控系统:接口请求异常监控篇

    摘要:参考一步一步搭建前端监控系统错误监控篇用插件记录网络请求异常关于专注于微信小程序微信小游戏支付宝小程序和线上应用实时监控。 摘要: 如何监控HTTP请求错误? 作者:一步一个脚印一个坑 原文:搭建前端监控系统(四)接口请求异常监控篇 Fundebug经授权转载,版权归原作者所有。 背景:市面上的监控系统有很多,大多收费,对于小型前端项目来说,必然是痛点。另一点主要原因是,功能虽然...

    dreamtecher 评论0 收藏0
  • 谈谈前端异常捕获与上报

    摘要:另外这样的异常捕获不能捕获的异常错误信息,这点需要注意。最终大致的流程图如下结语前端异常捕获与上报是前端异常监控的前提,了解并做好了异常数据的收集和分析才能实现一个完善的错误响应和处理机制,最终达成数据可视化。 关于 微信公众号:前端呼啦圈(Love-FED) 我的博客:劳卜的博客 知乎专栏:前端呼啦圈 前言 Hello,大家好,又与大家见面了,这次给大家分享下前端异常监控中需...

    Kosmos 评论0 收藏0
  • 一步一步搭建前端监控系统:如何记录用户行为?

    摘要:摘要通过记录用户行为,快速复现场景。这是搭建前端监控系统的第二章,主要是介绍如何统计报错,跟着我一步步做,你也能搭建出一个属于自己的前端监控系统。 摘要: 通过记录用户行为,快速复现BUG场景。 作者:一步一个脚印一个坑 原文:搭建前端监控系统(备选)用户行为统计和监控篇(如何快速定位线上问题) Fundebug经授权转载,版权归原作者所有。 一步一步搭建前端监控系统系列博客: ...

    tolerious 评论0 收藏0
  • 在单页应用中,如何优雅的上报前端性能数据

    摘要:本文的介绍的是如何设计一个通用的可以以较小的侵入性,自动上报前端的性能数据。具体的做法可以看我的上一篇文章在单页应用中,如何优雅的监听的变化。三如何上报性能数据那么如何上报性能数据呢,我们第一反应就是通过请求的形式来上报前端性能数据。   最近在做一个较为通用的前端性能监控平台,区别于前端异常监控,前端的性能监控主要需要上报和展示的是前端的性能数据,包括首页渲染时间、每个页面的白屏时...

    KitorinZero 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<