web前端埋点及数据上报

article/2025/10/8 8:44:37

web前端埋点及数据上报

  • 简介

前端埋点即在产品客户端获取用户行为和使用情况的一种监控方式。通过埋点可以获取到用户行为数据,借助这些数据,我们可以从用户角度出发,升级迭代产品,使其更加贴近用户使用习惯,提升产品使用体验与用户留存率,使产品在市场上更具竞争力。

  • 原理

用户在使用互联网产品时,在产品客户端会留下诸如浏览、点击、滑动等交互行为,使用埋点程序对这些行为进行监控和采集,将采集到的行为数据上报给服务器,达到监控与分析的目的。

目前web端产品常需要前端埋点来监控采集的数据内容主要分为三类:

1. 数据类,常用基本数据指标如:PV,UV,每个页面的停留时间,在页面触发了何种功能行为,访问来源等等,对基本数据进行挖掘与分析,还能生成用户画像,行为轨迹等高级数据。

常用埋点基本指标:

2. 性能类,常用性能指标如:页面渲染时间、用户与产品交互动效完成时间、网络请求响应完成时间等等。

 

常用埋点性能指标:

 

3. 异常类,如:静态资源加载错误,程序执行报错。

  • 方案

前端埋点方案主要分为三类:

1. 无痕埋点

比较早的埋点方式,通过监听浏览器全局事件来收集用户数据,所以页面上所有的用户点击等操作行为都会被收集上报。

例如:

 

可以看出该方案埋点简单明了,与业务代码无耦合,收集的用户行为数据也比较全,但是数据量比较大,无用数据太多,给服务器增加了很大的压力,也无法进行定制化,只能收集常用的基本数据,一般用于粗颗粒度的数据分析。

目前无痕埋点主要采取第三方sdk的方式接入,如:百度统计,虽然是粗粒度数据分析,但也比较全面了。

2. 可视化埋点

通过一个可视化界面进行圈点等方式直接对业务页面进行埋点,这种可视化工具类似于dreamweaver, 所见即所得,通过可视化交互的方式在页面上的元素(按钮,链接等)进行埋点配置注入。

主要原理是在目标产品项目中嵌入开启可视化功能的SDK,通过WebSocket的方式和服务器、前端进行相互通信,SDK会定时收到服务器下发的页面请求;然后会上报页面快照和界面因子信息到服务器,服务器收到信息后会根据界面因子信息对页面的每个元素进行分析,根据控件的类型来标记哪些页面元素是可以被埋点的;最后将可埋点信息交给前端渲染,此时,前端Web页面上展示就的就是可以埋点的页面。

目前市场上已经有比较成熟的可视化埋点方案产品,如:

神策数据:神策分析|私有化部署的用户行为分析平台 - 神策数据产品

诸葛IO:快速开始 · 诸葛io使用文档

以上两种埋点方案主要依靠第三方sdk提供的服务,sdk供应商虽然能提供尽可能全面的埋点数据,但想达到完全的定制化,获取更复杂的业务埋点数据还是有一定距离。

3. 手动代码埋点

产品开发人员根据业务分析需求在产品源代码层进行埋点。完全地满足定制化埋点需求,支持各种场景的业务需要,精准可控。但缺点也很明显,埋点代码侵入性大,容易与业务代码耦合,后期维护成本较高,一般公司自建埋点平台系统会采用这种方式。

  • 埋点数据上报

前端埋点收集到的数据需要上报给服务端,目前较为常用的方案为三种。

1. 传统XHR请求

优点:可以灵活地设置请求头属性,post请求可以发送大体量数据,满足特定场景的埋点需求。

缺点:数据量大的请求占用带宽资源多,增加服务器压力。页面销毁时的监控埋点大概率上报失败。

2. Image 对象

利用图标对象的src属性发送get请求上报数据

优点:上报数据的请求不需要接收响应,可灵活跨域,src请求体量小,速度快,页面销毁时的监控埋点会等上报请求发送完毕,再执行页面卸载。

缺点:无法发送大体量数据,页面销毁时有监控埋点会让页面关闭速度变慢,影响用户体验。

 

3. Beacon API

Beacon api 是w3c新引入的补充性api,就是用来解决web页面在触发卸载销毁事件unload期间会中断所有异步xhr请求的问题。这个API给navigator对象增加了一个sendBeacon()方法。这个方法接收一个URL和一个数据有效载荷参数,并会发送一个POST请求。可选的数据有效载荷参数有ArrayBufferView、Blob、DOMString、FormData实例。它会保证页面在已经关闭的情况下也会发送请求。

 

不过它也有缺点:

  1. 只支持post请求,并且发送的数据量不会像正常xhr的post数据量那么大,最大数据量大小是由客户端(用户浏览器)版本决定的,chrome@70版本测试大概15MB左右。
  2. 因为是新补充的api,会存在浏览器兼容性问题,如图:

 

综上,埋点数据上报在上报轻量级的数据时可以采取image src属性进行上报,特定场景需要采集大量级的数据可以改用普通post请求方式,在需要监测用户关闭浏览器时上报数据,首选采用beaconApi方式,若用户的当前浏览器不支持该方法,可降级为image方案。目前很多大厂已采用这种混合式埋点方案,例如:

 

附录:

Web 性能 | MDN

Beacon API - Web API 接口参考 | MDN


http://chatgpt.dhexx.cn/article/IdAkpeMU.shtml

相关文章

【前端埋点方案】前端监控和前端埋点方案介绍

在线上项目中,需要统计产品中用户行为和使用情况,从而可以从用户和产品的角度去了解用户群体,从而升级和迭代产品,使其更加贴近用户。用户行为数据可以通过前端数据监控的方式获得,除此之外,前端还需要实现性能监控和异…

埋点tracker:前端埋点服务-技术要点梳理

一、背景 埋点方案,前端涉及到哪些技术要点,本文做简单的梳理和总结。 二、指纹追踪技术:识别到用户及设备 浏览器:浏览器指纹_snowli的博客-CSDN博客 三、用户设备信息(navigator) navigator.userAgent 四…

前端 埋点

App.vue是vue页面资源的首加载项,是主组件,页面入口文件。所有页面都是在App.vue下进行也换的,APP.vue 负责构建定义及页面组件归集 需求 1.打开页面的时候,记录当前页面 2.切换页面的时候,记录在当前页面的停留时间…

前端埋点实现方案

前言 领导今天又来活了😣,要记录每个页面的停留时间,以及页面的操作,是由哪个页面跳转过来的,给每个页面生成GUID上报给服务端,并且需要携带设备型号和设备唯一标识🙄 名称解释 UV&#xff0…

前端组件化埋点方案与实现

背景 埋点,是收集产品的数据的一种方式,其目的是上报相关行为数据(PV/UV/时长/曝光/点击等),由相关人员以此分析用户的使用习惯,助力产品不断迭代和优化。对于开发来说,通常不仅仅需要完成基础…

三分钟,教你3种前端埋点方式!

作者:彩虹修狗 https://juejin.cn/post/7224132741997281338 前言 只有了解用户,我们才能服务好用户,而最接近用户的我们,自然要承担起更多的责任。 那么在一个企业中,我们要如何去了解用户呢?最直接有效的…

前端数据埋点

数据埋点,是一种常用的数据采集方法。埋点是数据的来源,采集的数据可以帮助业务人员分析网站或者App的使用情况、用户行为习惯等,是后续建立用户画像、用户行为路径等数据产品的基础。 前端的埋点方式主要分为代码埋点、可视化埋点、无埋点三…

前端埋点实现

您好,如果喜欢我的文章,可以关注我的公众号「量子前端」,将不定期关注推送前端好文~ 前端埋点实践 介绍1. 实现自定义hook,监测组件2. 收集数据3.前端错误捕捉4. 发送后端保存数据5.收集数据展示总结 介绍 这段时间博主一直在投入…

前端埋点实现及原理分析

正如在宏观介绍的博客中写到的,做用户行为分析的方式有“前端埋点”和“后端埋点”的区分,真好今天敲了一个坤哥整理的“前端埋点”的程序,理解了之后结合demo来简单讲解“前端埋点”如何做。 前端埋点原理图: 如上所示&#xff…

FReLU

论文:https://arxiv.org/pdf/2007.11824.pdf 代码:https://github.com/megvii-model/FunnelAct 概述 卷积神经网络(CNN)在许多视觉识别任务(例如图像分类,目标检测和语义分割)中均达到了最先进…

LFR benchmark在windows操作系统下形成网络详细步骤

研究社交网络的人应该都知道LFR benchmark network吧。但是我从网上找到很多关于LFR的压缩包,里面包含很多.cpp文件,在vs下建工程,把这些文件放进去却怎么也跑不通,真的是很恼火。 今天,终于看到一篇博客,…

神经网络-LFR model

CLDNN[1] 不同的网络结构有不同的优势 CNN擅长减少频率偏移LSTM擅长对时序信号进行建模DNN可以对特征做更高阶的抽象,更容易进行分类 CLDNN依次将CNN/LSTM/DNN进行串联组合成一个新的网络,相当于依次进行频域变化/时域关联/特征抽象,相比于…

CRLF和LF区别

目录: 文章目录 1、什么是CRLF和LF2、为什么要探究CRLF和LF3、三种方式处理的不同4、在Git中如何转换?参考文献 1、什么是CRLF和LF CRLF 是carriagereturnline feed的缩写。中文意思是回车换行。 LF是line feed的缩写,中文意思是换行。 2、…

LFR benchmark 操作步骤

先奉上资源 链接:https://pan.baidu.com/s/1Mm_UwUAhM0ofKXcFbti0YA 提取码:hvp8 复制这段内容后打开百度网盘手机App,操作更方便哦运行操作 在解压后的文件下找到 /benchmark/Debug 文件夹, 在该文件下运行命令行程序&#x…

西克推出LBR/LFR长距离非接触物位/液位传感器

西克推出LBR/LFR长距离非接触物位/液位传感器 在日常的生产过程中,我们可能会遇到一些严苛的工作环境,例如上百米高的筒仓,诸多粉尘的罐内环境,亦或是充满蒸汽或附着物的生产环境;对料位的监控显得更加重要和困难。传…

CRLF和LF

目录: 什么是CRLF和LF为什么要探究CRLF和LF三种方式处理的不同更多参考文献 👁 关注微信公众号:非典型理科男 回复:架构设计 获取 架构设计经典著作 1、什么是CRLF和LF CRLF 是carriagereturnline feed的缩写。中文意思是回车换…

使用Arduino Uno构建一个巡线机器人

使用Arduino Uno构建一个巡线机器人 原文 MX 巡线机器人(LFR: line follower robot)是一种简单的自主引导机器人,它遵循在地面上绘制的线来检测白色表面上的暗线或黑暗表面上的白线。在本教程中,使用 Arduino Uno 和一些易于访问…

网络科学—Windows下生成LFR人工网络数据集的步骤

目录 1 引言 2 步骤 2.1 下载LFR程序包 2.2 解压LFR程序包 2.3 进入cmd程序 2.4 生成LFR网络 1 引言 很多做网络科学研究的学者研究生等都需要经常用到人工网络的数据,最为常用的就是LFR人工网络,下面详细描述了LFR网络的生成方式 2 步骤 2.1 下…

查看gcc编译器版本

我们在windows下DS5中编译时使用GCC交叉编译器,但是在ubuntu时也需要使用GCC编译器,这时最好时保持版本一致,所以就需要查看windows下版本,如下图,在按装的文件夹中找到对应得文件即可。 转载于:https://www.cnblogs.c…