标签:定义 adc 时间 排查 场景 屏幕分辨率 details 检测 相对
swan.request()
异常时的请求状态、请求时长、请求地址等;swan.downloadFile()
出现异常时,统计加载时间、异常类型、资源地址等;小程序App()生命周期里提供了onError
函数,可以通过在onError
里收集异常信息,具体原理可查看JS实现监控微信小程序的原理
App({
// 监听错误
onError: function (err) {
// 上报错误
swan.request({
url: "https://url", // 自行定义报告服务器
method: "POST",
errMsg: err
})
}
})
一些较隐蔽的错误如果只有错误栈信息,排查起来会比较难,如果有用户操作的路径,在排查时就方便多了。
函数劫持
需要在App函数中的onLaunch、onShow、onHide生命周期插入监控代码,通过重写App生命周期函数来实现。
App = function(app) {
["onLaunch", "onShow", "onHide"].forEach(methodName => {
app[methodName] = function(options) {
// 构造访问日志对象
var breadcrumb = {
type: "function",
time: utils.now(),
belong: "App", // 来源
method: methodName,
path: options && options.path, // 页面路径
query: options && options.query, // 页面参数
scene: options && options.scene // 场景编号
};
self.pushToBreadcrumb(breadcrumb); // 把执行对象加入到面包屑中
})
}
但是这样写,会把用户自定义的内容给覆盖掉,所以还需要把用户定义的函数和监控代码合并。
var originApp = App // 保存原对象
App = function(app) {
// .... 此处省略监控代码
// .... 此处省略监控代码
originApp(app) // 执行用户定义的方法
}
用户在访问网页的时候,在浏览器开始显示之前都会有一个的白屏过程,在移动端,受限于设备性能和网络速度,白屏会更加明显。
页面完全空白的时间,web可以在页面的head底部添加的JS代码用来做白屏时间的标记。
通过使用微信离线存储,Web 开发者可借助微信提供的资源存储能力,直接从微信本地加载 Web 资源而不需要再从服务端拉取,从而减少网页加载时间,为微信用户提供更优质的网页浏览体验。每个公众号下所有 Web App 累计最多可缓存 5M 的资源。这个设计有点类似 HTML5 的 Application Cache。
参考资料
小程序基础库的更新迭代——8.2 异常
小程序异常监控收集
微信小程序错误监控经验谈
JS实现监控微信小程序的原理
微信小程序函数调用监控
微信 Web 资源离线存储
标签:定义 adc 时间 排查 场景 屏幕分辨率 details 检测 相对
原文地址:https://www.cnblogs.com/yfife/p/9305258.html