互联网产品怎么做数据埋点

摘要:
数据收集是通过在HTML页面中嵌入他们提供的js代码来实现的。技术实现原理通常是Web服务器通过代码向浏览器返回一个1*1像素的透明图像(人眼在网页上看不到图像)。在设计嵌入方案之前,需要确定要收集哪些数据。顾名思义,前端埋点是将数据收集代码嵌入到用户可见的端部(APP、网页、PC客户端、小程序),调用SDK提供的接口来收集数据,而前端埋点可以在接口上收集用户的操作轨迹。

在互联网产品上线之后,产品和运营人员需要即时了解产品的使用情况,有多少用户,用户使用了哪些功能,停留时长,使用路径。。。等。要回答这些问题,需要有数据,不能拍脑袋想当然。数据怎么得到呢?埋点就是采集数据的重要途径。

数据埋点不是新名词,在电脑网站出来之后就有统计工具,站长们很熟悉的谷歌、百度统计等工具,通过在HTML页面中嵌入它们提供的js代码实现数据采集。

多说几句,无论谷歌、百度还是其它的Web页面统计工具,技术实现原理通常都是由Web服务器端通过代码的方式向浏览器返回一张 1*1 像素的透明图片(在网页上人眼看不到这张图片),图片的过期时间设置成立即过期,这样每次打开页面浏览器都会去请求这张图片,服务器端就可以记录下请求数据。明白了原理,自己也可以写一个简单的统计工具。

在设计埋点方案之前需要确定收集哪些数据,将这些需求汇总,产品、运营、技术一起确定埋点方案。

从埋点位置划分,可以分为:前端埋点,后端埋点。

前端埋点

顾名思义就是在用户可见的那端(APP、网页、PC客户端、小程序)嵌入数据采集代码,像一些第三方的统计工具,比如友盟等,前端嵌入它们的SDK,调用SDK提供的接口采集数据。

前端埋点能收集到用户在界面上的操作轨迹,这些数据后端没法收集,比如用户点击了哪个按钮,打开了哪些页面,页面之间的跳转次序等。

后端埋点

后端埋点就是在服务端嵌入代码,收集数据,由于是在服务端采集数据,可以避免前端埋点的以下一些问题:

客户端采集数据,为了尽量减少对用户体验的影响,需要对采集的数据压缩、暂存,为减少移动端的数据流量,一般只在网络状况良好的情况下向服务器发送数据,因此数据会有延迟,丢数据等弊端。而在服务端采集数据,数据在内网传输,数据传输的即时性强,丢失数据的风险小。

客户端采集数据,如果要增加采集点或变更采集方案,需要修改客户端代码,这就需要发布新版本,受发布周期的影响,而且通常很多用户并不会及时更新版本,将导致新方案不能覆盖所有用户。在服务端采集数据则没有这些问题。

通过以上比较,实施时尽量采用后端埋点,除非后端没法采集到所需要的数据。

前端埋点技术

目前常见的前端埋点技术,有下面三类:

1、代码埋点

谷歌统计、百度统计、友盟等都是代码埋点的例子。在前端代码里嵌入数据采集代码,比如在APP启动时嵌入,在按钮点击事件里嵌入等。

代码埋点的优点是控制精准,采集的数据项精确。缺点:首先是需要开发人员到处添加采集代码,添加和修改的工作量大;其次变更采集策略,需要发布新版本,代价巨大;此外对于APP来说还有耗电、消耗数据流量、丢失数据的风险。

2、可视化埋点

从上面可知,代码埋点的缺点很多,最大的缺点是变更需要开发人员修改代码,不灵活。为了改善,有的公司开发出了可视化埋点技术,产品与运营人员通过GUI界面,鼠标点击的方式随时调整埋点位置,增加、取消埋点,再也不需要开发人员的介入,而且不用发布新版本。

最早提供这种方案的是 Mixpanel 公司,Github上有该公司发布的SDK代码,https://github.com/mixpanel。国内提供可视化埋点技术的公司大都是在它的基础上进行二次开发而成。

技术实现原理

基本原理就是将埋点位置信息做成可配置的资源,通过在后台管理端上操作生成这些配置,客户端启动或者定时从服务器端获取这些配置,客户端根据最新的配置采集数据,发送给服务端。

具体实现是SDK定时做界面截图,在截图的同时从界面UI的根对象开始遍历所有的可视化子对象,得到其层级关系。根据截图和UI元素的可视化信息重新渲染页面,识别可埋点的控件。当产品人员在后台管理端的截屏画面上点击可埋点控件,设置事件关联方面的配置,服务器保存这些配置,客户端在获取到这些配置信息以后,按照新配置采集数据。

3、无埋点

原理跟可视化埋点几乎一样,唯一的不同就是,无埋点是先把所有控件的操作数据采集下来,发给服务器,数据分析人员在后台管理端设置对哪些数据进行分析。由此可知,这个方案收集的数据量巨大,增加了网络传输和服务器存储负担。

无埋点比可视化方案优势的地方是收集的历史数据齐全,可以回溯分析过往数据。

工具选择

国内不少数据服务公司提供了数据采集、分析工具,初创公司可以选择使用它们的服务,不过最好选择可以独立部署的提供方,方便控制,防止数据泄漏。

总结一下,数据埋点需要根据需求而定,灵活使用以上方案,扬长避短。

数据埋点产品上线之后最重要的事情就是获取用户和运营推广,有关这个话题,参看《互联网产品发掘种子用户和意见领袖的方法》。

免责声明:文章转载自《互联网产品怎么做数据埋点》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇UI自动化的API总结MySQL数据库增删改查SQL语句(2018整理集合大全)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Jmeter做接口测试

Jmeter操作手册以获取微信公众号access_token为例 一、操作步骤 创建集合,集合名可以是项目名称,这里改为“微信公众号测试” 创建一个线程组,命名为获取access_token 创建一个请求,命名为获取access_token 在接口文档里面获取信息,填写协议类型、服务器名称或ip、HTTP请求方法、路径,端口号默认,因为是GEt方...

微信小程序循环中点击一个元素,其他的元素不发生变化,类似点击一个循环中的语音,其他的不发生点击事件

类似语音,因为都在一个数据内,所以点击第一个,所有的语音都变化,解决方法就是 把整个数据都获取下来,然后更改其中一个需要更改的值,然后再把整个数据都setdata回去,如果需要动画的话,wxml里面放两个组件,一个默认,点击时候隐藏,把另一个显示出来。   例如点击第一个语音,想要播放http://voluntarybanktestapi.wxstar.c...

as3.0 如何把变量转成XML子节点方法(elements)

游戏新加了一批特殊建筑物,为了给建筑添加浮动信息,由于建筑物太多,不想一个个添加浮动信息,也为了方便以后修改,我把数据配置到外部XML表里, 节点如下 <build_1083 funName="晶石提炼场(1083)" needRank="29"  gotoUrl=""/><!--晶石提炼场(1083) --><build_1...

更改DataTable中的数据 增删改查

https://book.51cto.com/art/200908/148569.htm 《Visual C# 2008原理与系统开发》第10章非连接环境下访问数据库,本章主要讲解了在非连接环境下访问数据库的模式,描述了以数据库为中心的应用程序设计、ADO.NET架构以及ADO.NET和XML之间的集成。本小节为大家介绍更改DataTable中的数据。...

Linux下安装LoadRunner LoadGenerator

一、下载LoadRunner LoadGenerator 和 compat-libstdc++-33-3.2.3-61 下载的软件放在 网盘里 一、下载LoadRunner LoadGenerator 和 compat-libstdc++-33-3.2.3-61 二、安装compat-libstdc++-33-3.2.3-61,根据自己linux位数选择...

element-ui 树形表格多选

如题element-ui 2.13.2版本支持树形结构tabel,多层级折叠显示 但是没有多选 + 树形tabel, 业务需求的情况下必须要实现,操作勾选数据编辑 这里我们可以用两个事件来实现:   @select:用户勾选某行触发事件,第一个参数selection:所有选中的数据, 第二参数row:勾选的这行数据)   @select-all : 表头的...