前端埋点与全链路

Yuyang 前端小白🥬

什么是埋点:

​ 前端埋点是一种用于收集用户在网站或应用程序上的行为数据的方法。这些数据可以帮助企业了解用户的行为模式、使用习惯,并对产品进行优化。

为什么要埋点:

  • 流量监测(按时间空间维度分析,留存分析,转化分析)。
  • 构建行为路径,获取用户的全链路信息获取,实现用户分群、人群洞察、行为细查等,构建用户画像。
  • 通过对埋点数据的处理、分析、建模,判断产品的效果和未来走向。
  • 为营销策略提供数据支持,分析营销效果,提高渠道转化。
  • 热力分析,帮助判断访客热衷的区域,评估网页设计是否合理等。
  • 实施AB Test,持续优化产品,使产品在市场上更具有竞争力。
  • 用户行为异常监测以及问题快速定位与响应。

埋点的使用场景有哪些:

image-20240625001317104

埋点方式:

代码埋点 全埋点 可视化埋点
定义 代码埋点是指在前端代码中手动添加埋点代码,用于捕获特定用户行为事件。这种方法灵活且精确,适用于需要细粒度数据收集的场景。 全埋点是一种自动化的埋点方式,旨在捕获页面上的所有用户行为事件。通过全埋点,可以自动记录用户在页面上的所有操作,如点击、滑动、输入等,减少了手动添加埋点的工作量。 可视化埋点是通过可视化界面配置埋点,而不需要修改代码。通过可视化工具,非技术人员也可以方便地配置和管理埋点。
优点 • 精确控制埋点的位置和事件。
• 可以收集详细的事件信息。
• 覆盖全面,无需手动添加埋点代码。
• 能够捕获所有用户行为,数据更完整
• 无需修改代码,配置方便。
• 非技术人员也可以配置和管理埋点。
缺点 • 手动维护埋点代码,工作量大,容易出错。
• 需要开发人员介入,维护成本高。
• 数据量大,可能带来存储和处理的压力。
• 需要在数据清洗和分析阶段进行大量处理。
• 可能无法满足所有细粒度的埋点需求。
• 配置不当可能导致数据不准确。

埋点例子:

代码埋点例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
$('#button').on('click', function() {
// 构建埋点数据
var eventData = {
eventType: 'button_click',
buttonId: 'button',
timestamp: new Date().toISOString()
};

// 发送数据到服务器
$.ajax({
url: 'https://example.com/track',
method: 'POST',
contentType: 'application/json',
data: JSON.stringify(eventData),
success: function(response) {
console.log('埋点数据发送成功');
},
error: function(error) {
console.error('埋点数据发送失败', error);
}
});
});

全埋点例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
// 全埋点脚本
(function() {
// 事件监听器
function eventListener(event) {
var eventData = {
eventType: event.type,
timestamp: new Date().toISOString(),
element: event.target.tagName,
id: event.target.id,
className: event.target.className,
pageX: event.pageX,
pageY: event.pageY,
url: window.location.href
};

// 发送数据到服务器
var xhr = new XMLHttpRequest();
xhr.open("POST", "https://example.com/track", true);
xhr.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
xhr.send(JSON.stringify(eventData));
}

// 监听点击事件
document.addEventListener('click', eventListener, true);
document.addEventListener('input', eventListener, true);
document.addEventListener('scroll', eventListener, true);
})();

埋点模型:

埋点模型包含两个主要概念:事件(event)属性(params)

事件:通过埋点定义的用户行为或业务操作,比如页面打开,页面离开,模块曝光,模块点击

属性:事件附带的各种维度信息,比如用户信息,网络信息,设备信息,事件具体维度信息等

一个设计的相对完善的模型,一般包含用户行为五元素

通过这个可以详细的分析是谁在什么地方什么时间,怎么样进行了什么操作

image-20240625004123315

模型事件:

image-20240625004727426

模型信息:

image-20240625005335046

埋点上报:

数据队列处理:当需要上报的数据量逐渐变多时,就需要考虑进行批量上报和延迟上报,本质上都是为了不阻塞业务程序的执行,上报本来就是用户无感知的事情,用户不能为此耗时买单。

image-20240625011532834

对于数据请求处理,主要考虑的有三个因素

  • 跨域的问题
  • 页面销毁时,如何保障还未成功上传的数据完成数据上传请求
  • 大数据量的上传

较为标准的针对模块曝光的定义:窗口可视区域内 && 组件矩形与视窗区域发生交集 && 交集垂线距离 >= 1px && 停留时间 >= XXms

Reference:https://juejin.cn/post/7324334380373426227?searchId=202406242342178A14CCB0DE15106BCCCB

备注:近几个月来看到👀过质量最高的文章!学到了!