监控
一般分为三种:
- 页面埋点
- 性能监控
- 异常监控
页面埋点
- PV / UV
page view
与unique visitor
,用户访问的数量与独立访客数
- 停留时长
- 流量来源
- 用户交互
手写埋点
自主选择需要监控的数据然后在相应的地方写入代码。
缺点
工作量较大,每个需要监控的地方都得插入代码
无埋点
统计所有发生的事件并定时上报,然后服务端对数据进行过滤得出需要的数据
可以采用事件代理的方式监听页面中所需的事件
性能监控
使用Performance API来实现
关键时间节点: performance.timing
或者 performance.getEntriesByType('navigation')
通过时间节点之间的差值,得出某个过程所花费的时间
名称 | 计算 |
---|---|
DNS查询耗时 | domainLookupEnd-domainLookupStart |
TCP连接耗时 | connectEnd-connectStart |
内容加载耗时 | responseEnd-connectStart |
首包时间 | responseStart-domainLookupStart |
白屏时间(首次渲染时间) | responseEnd-fetchStart |
首次可交互时间 | domInteractive-fetchStart |
HTML加载完成 | domContentLoaded - fetchStart |
页面完全加载 | loadEventStart-fetchStart |
异常监控
代码报错
使用 window.onerror
拦截报错,可以拦截大部分详细报错信息
特殊
- 跨域代码显示:Script error,可以通过为script添加的crossorigin 属性解决
接口异常上报
- 可以通过img 标签的 src 发起一个请求