Web 和小程序等前端真实体验监控服务
SDK 提供一个 hook 来帮助用户在日志上报前对日志进行屏蔽和修改,可以使用 beforeRequest,返回 false 就可以不上报该条日志,返回修改过后的 data 就可以实现对上报数据的修改。
beforeRequest
SDK 通过劫持 fetch 和 xhr 的方式实现对接口的测速,在请求前和请求后分别进行打点测速,因为 JS 计算时间差的逻辑依赖 js 主线程执行,如果 end 时间执行的时候有线程阻塞,会导致实际计算的时长要大于浏览器 network 时长。
webvitals 中 CLS 的值必须是页面可见性改变的时候才计算的,用户刷新页面的时候,如果选中了 Preserve log,就会有一条请求处理发送中,但恰好被页面刷新给 cancel 掉,就出现这种情况。对用户和数据没有影响,可以忽略。
Aegis SDK 为每个用户独立生成一个 aid 作为用户(设备)的唯一标识,存储在浏览器的 localStorage,用于计算 UV。aid 不受登录态影响,只有用户清理浏览器缓存 aid 才会更新。
接口请求日志是用户的接口的请求和返回的内容。一般只有白名单用户才会上报接口请求日志,但是如果一个用户在使用过程中,中途发生 JS 错误,我们会把这个用户之前一段时间的接口信息也上报到服务端,方便开发者查找和分析问题。