- 當前頁面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...css
- 一、下載 dist/performance-report.min.js 到本地
- 二、使用script標籤引入到html的頭部(備註:放到全部js資源以前)
- 三、使用performance函數進行數據的監聽上報
<html> <head> <meta charset="UTF-8"> <title>performance test</title> <!-- 放到全部資源以前 防止獲取不到error信息 --> <script src="../dist/performance-report.min.js"></script> <script> //開始上報數據 Performance({ domain:'http://some.com/api', //更改爲你本身的上報地址域名 }) </script> </head>
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)=>{}) })
git clone https://github.com/wangweianger/web-performance-report.git npm install //開發 npm run dev //打包 npm run build http://localhost:8080/test/ 頁面測試
參數名 | 描述 | 說明 |
---|---|---|
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" } ] }