埋点是什么?
所谓“埋点”,是数据采集领域(尤其是用户行为数据采集领域)的术语,指的是针对特定用户行为或事件进行捕获、处理和发送的相关技术及其实施过程。比如用户浏览某个页面的时长、某个按钮的点击次数等等。
为什么需要埋点?
埋点是产品数据分析的基础,一般用于推荐系统的反馈、用户行为的监控和分析、新功能或者运营活动效果的统计分析等。随着数据挖掘等技术的兴起,埋点采集到的数据在以下方面的作用也越来越凸显。
名称解释
UV(Unique visitor)
是指通过互联网访问、浏览这个网页的自然人。访问您网站的一台电脑客户端为一个访客。00:00-24:00内相同的客户端只被计算一次。一天内同个访客多次访问仅计算一个UV。
IP(Internet Protocol)
独立IP是指访问过某站点的IP总数,以用户的IP地址作为统计依据。00:00-24:00内相同IP地址之被计算一次。
PV(Page View)
即页面浏览量或点击量,用户每1次对网站中的每个网页访问均被记录1个PV。用户对同一页面的多次访问,访问量累计,用以衡量网站用户访问的网页数量。
VV(Visit View)
用以统计所有访客1天内访问网站的次数。当访客完成所有浏览并最终关掉该网站的所有页面时便完成了一次访问,同一访客1天内可能有多次访问行为,访问次数累计。
主流方案
手动埋点
手动埋点,也叫代码埋点,即纯手动写代码,调用埋点 SDK 的函数,在需要埋点的业务逻辑功能位置调用接口,上报埋点数据,像友盟、百度统计等第三方数据统计服务商大都采用这种方案。手动埋点让使用者可以方便地设置自定义属性、自定义事件,控制比较精准,但是这种方式代价比较大,每一个控件的埋点都需要加入代码,并且每一次更新埋点方案都需要修改代码。
可视化埋点
通过可视化交互的手段,代替上述的代码埋点。将业务代码和埋点代码分离,提供一个可视化交互的页面,输入为业务代码,通过这个可视化系统,可以在业务代码中自定义的增加埋点事件等等,最后输出的代码耦合了业务代码和埋点代码。
可视化埋点的缺陷就是可以埋点的控件有限,不能手动定制。
无痕埋点
也叫全埋点,利用浏览器或APP自带的监听方式,对用户的浏览页面、点击等行为进行收集,一般用于粗颗粒度的数据分析,但是这种方式收集到的数据噪声大,不管数据是否有用全部收集。
埋点的用途
数据监控(监控用户行为)
- 用户在某个页面的停留时间
- 用户在页面中的行为,比如点击按钮等等 收集这些数据可以更好的了解到用户的行为习惯,可以针对用户停留时间长的页面投放广告等。
性能监控
- 收集系统白屏时间
- 页面请求的响应时间
- 页面交互动画的完成时间等等 这些数据可以用于系统性能的监测,根据结果来进一步的优化系统的性能
异常监控
- js的异常监控
- css样式丢失的异常监控 主要用来收集线上的异常情况
埋点上报方式
图片请求
调用一个服务端指定的gif图片,服务端拦截该img,解析对应img后面的参数,兼容性好,不需要挂载到html文档上,不存在跨域问题,但是不支持post,传递数据量有限
WebSocket ####连接
使用WebSocket协议与服务器建立双向的连接,并通过发送消息来进行实时的埋点
Navigator.sendBeacon(url, data)
主要用于将统计数据发送到服务器,避免了传统技术发送分析数据的问题,不存在跨域,不需要挂载到html文档上,异步的,支持post,可以大量传递数据,但是存在兼容性问题