首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Navigator.sendBeacon实现页面埋点统计

早之前做过页面统计,用的是神策和百度统计,里面那些数据个人觉得已经很全面了,最近公司进行一些特殊埋点统计,需要在市场想要的地方一个一个加方法调接口。...如果要自己统计页面浏览时长和点击事件,就只能做一些延迟和牺牲一些准确性,反正就是页面跳转需要统计的数据会丢失一些。...早之前做过,还是看的阮一峰双循环延迟阻塞页面卸载,除了死循环延迟,还有其他旁门左道,比如ajax设置同步,然后在状态是2的时候就进行页面跳转,无所谓响应;发送图片,携带数据,浏览器对图片都会加载,这就需要服务器配合了...上面都是延迟页面卸载,牺牲体验保证准确性,另一种是把数据传递到下一个页面,然后在下一个页面调用接口统计,比如地址携带、本地存储、浏览器提供的API等都能把数据传递到下一个页面。...应该是近几年对统计的需求比重大了,浏览器已经有了草案navigator.sendBeacon(),MDN上面描述了上面方法的痛点: 这个方法主要用于满足统计和诊断代码的需要,这些代码通常尝试在卸载(unload

1.1K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【iOS开发】关于iOS统计埋点

    这里要讲的是如何方便优雅的集成第三方的统计系统,如:友盟等。 一般的埋点都是每个要统计的地方都加一句埋点代码,你刚毕业的时候这么写没有问题,但是如果你做了几年的软件开发,还这样写,那就是你的错了。...一般的埋点就是在方法的开头或者结尾插入一句统计的代码。它不影响方法的运行。基于这样的要求。自然而然的就会想到,这是对方法进行AOP了。在iOS里面可以通过runtime来实现。...也有一些很成熟的第三方库,像Aspects,](https://github.com/steipete/Aspects),) 下面的例子就是通过Aspects将埋点代码进行统一。...} error:nil]; } @end 上面这样写,把所有要埋点的地方都写到同一个文件中了。...这样就实现了动态埋点。 但是产品经理是不会让我们这么舒服的,他肯定又会有这样的需求,『打开这个商品详情的时候要统计这个商品的名称』,Aspects也是支持参数传递的,通过那个usingBlock。

    2.8K41

    关于前端埋点统计方案思考

    埋点即监控用户在应用表现层的行为,于产品迭代而言至关重要。埋点数据分析是产品需求的 来源,检验功能是否达预期的 佐证。前端较服务端更接近用户,本小白将在此对前端埋点统计方案述说一二。...埋点统计通常分两类: 页面访问量统计 功能点击量统计 页面访问量统计 页面访问量统计通常分两类: PV:页面访问人次 UV:页面访问人数 页面访问量,并非仅仅取决于其内容吸引力,影响因素包含入口...其中 param keys 指代需上报的业务请求参数 key list(并非全部参数均需随埋点上报)。...上述方案大大节约请求数,但存在明显缺陷: 将埋点上报混入业务接口,上报 crash 不仅丢失统计数据,还将影响主功能。 统计与业务 高耦合,两者尽量不混于同一服务。...待上报的点击事件函数均需调用 logEvent:封装一枚附带埋点上报的 组件,以 Vue 为例。

    2.6K10

    uniapp 数据统计,数据埋点,自定义事件埋点封装

    本博文实现了uniapp的数据统计埋点的封装,可以自动统计页面的PV, UV,页面停留时长,不需要在每个页面的生命周期写统计(tabBar 的页面除外,tabBar 页面需要添加自定义事件)     ...$common.Init.call(this);         // 统计自定义事件触发埋点         this.myMta('show')                3.修改mtaUrl...实现思路:重写unaipp的路由,在调用路由跳转的时候触发页面PV,UV,停留时长的信息统计,因为tabBar 不会触发路由跳转的API,所以需要在其中的页面用自定义事件手动添加上。  ...myMta.js const mtaUrl = 'https://test.cn/commonapi/system/saveRecordLog' const appId = 'test'; // 埋点通用接口...async function myMta(triggerType = "", pageUrl = '') { console.log('埋点', triggerType, pageUrl

    2.9K30

    还在手动埋点么?out 了。不到百行代码实现自动埋点

    埋点是一个常见的需求,就是在函数里面上报一些信息。像一些性能的埋点,每个函数都要处理,很繁琐。能不能自动埋点呢? 答案是可以的。...埋点只是在函数里面插入了一段代码,这段代码不影响其他逻辑,这种函数插入不影响逻辑的代码的手段叫做函数插桩。 我们可以基于 babel 来实现自动的函数插桩,在这里就是自动的埋点。...return 'bbb'; } } const c = () => 'ccc'; const d = function () { console.log('ddd'); } 我们要实现埋点就是要转成这样...我们实现了自动埋点! 总结 函数插桩是在函数中插入一段逻辑但不影响函数原本逻辑,埋点就是一种常见的函数插桩,我们完全可以用 babel 来自动做。...函数插桩就是在函数体开始插入一段代码,如果没有函数体,需要包装一层,并且处理下返回值。、

    54420

    【实战】还在手动埋点么?out 了。不到百行代码实现自动埋点

    埋点是一个常见的需求,就是在函数里面上报一些信息。像一些性能的埋点,每个函数都要处理,很繁琐。能不能自动埋点呢? 答案是可以的。...埋点只是在函数里面插入了一段代码,这段代码不影响其他逻辑,这种函数插入不影响逻辑的代码的手段叫做函数插桩。 我们可以基于 babel 来实现自动的函数插桩,在这里就是自动的埋点。...return 'bbb'; } } const c = () => 'ccc'; const d = function () { console.log('ddd'); } 我们要实现埋点就是要转成这样...[[autoTrackPlugin, { trackerPath: 'tracker' }]] }); console.log(code); 效果如下: 我们实现了自动埋点...总结 函数插桩是在函数中插入一段逻辑但不影响函数原本逻辑,埋点就是一种常见的函数插桩,我们完全可以用 babel 来自动做。

    49420

    埋点统计~~从UITableView数据曝光说起

    埋点行为背景 金融产品中为了配合好运营 做好产品的营销和推广,往往在产品中加入一些埋点统计。...然鹅这些粗粒度的统计产品往往不能全面很好的辅助互联网公司做好用户采集和建立用户画像模型,因此有条件的公司内部会做自己的用户行为埋点统计,打造一套自己的用户行为分析平台…… 数据埋点采集对产品的意义 UI...目前可以这么定义---当页面滑动结束或首次加载完成时呈现给用户的所有商品均算是曝光 UITableView中用户浏览中略过的商品条目 这个就有意思了,用户在快速浏览中可能会快速滑动翻页,更有甚者直接快速滑动之后让列表自己滑动...也就是这些没被看到的数据就是需要统计的数据 ? 快速滑动后 ?...采集结果 我们来分析一下这个结果是如何获取的 1 记录最底部的位置(需要完全展示)v0 2 滑动之后自由滑动需要超过一屏幕 3 结束滑动记录顶部位置v99+ 那么v0~v99+ 之间的即是快速滑动过程中没被用户认真浏览的数据

    1.4K32

    埋点统计优化,首屏加载速度提升

    埋点统计在我们业务里经常有遇到,或者很普遍的,我们自己网站也会加入第三方统计,我们会看到动态加载方式去加载jsdk,也就是你常常看到的insertBefore操作,我们很少考虑到为什么这么做,直接同步加载不行吗...同步引入方式,当然会,我的业务代码还没加载,首屏就加载一大段统计的jsdk,在移动端页面打开要求比较高的苛刻条件下,首屏优化,你可以在埋点统计上做些优化,那么页面加载会有一个很大的提升,本文是一篇笔者关于埋点优化的笔记...不经感叹,就一个定时器这一点点的改动,对整个应用提升有这么大的提升,我领导说,快应用在线加载时,之前因为这个统计js的加载明显阻塞了业务页面打开速度,做了这个优化后,打开应用显著提升不少。...,我们可以使用定时器+insertBefore方式可以大大提高首屏的加载速度,这也给我们了一些启发,首屏加载,非业务代码,比如埋点统计可以使用该方案做一点小优化加快首屏加载速度 如果使用insertBefore...方式,非常不建议同步方式insertBefore,这种方式还不如同步加载统计脚本 在特殊场景下,我们需要加载统计脚本,有基础信息的依赖后,我们也需要在业务代码使用统计,我们不要在动态加载脚本的同时使用onload

    92320

    百度、Google 埋点统计(Vue篇)

    参考资料:资料 一、Vue 使用百度统计 在Vue单页面开发中接入百度统计代码时,如果直接按照官网的走会出现错误,就是_hmt找不到,这是因为在一个js文件里声明的变量在另一个js文件里是找不到的,所以需要把...易出现的错误: 1、百度统计:页面代码安装状态:代码未生效 说明:一般安装完百度统计后20分钟左右就生效了,如果时间过长说明安装有问题 页面代码安装状态:代码未生效 检查一下页面代码中是否包含以下代码...,需要去掉 //去除掉 二、Vue 使用 Google 统计 单页面应用切换时要手动发送页面统计,首先在...www.google-analytics.com/analytics.js','ga'); ga('create', 'UA-yourID', 'auto') ga('send', 'pageview') // 是否要统计着陆页面访问...,取决于你的需求,这个不一定需要,会和`router`统计有重复 // main.js 里,如果你使用了 vue-router router.afterEach(function (to) {

    1.5K10

    页面日志采集(埋点)思路及其实现

    页面日志采集 页面浏览日志采集。指的是当一个页面被浏览器或者APP加载呈现时采集的日志,也是页面浏览量(Page View, PV)和访客数(Unique Visitors,UV)的统计基础。...页面交互日志采集。获取用户操作日志,通过量化获知用户的兴趣点或者体验优化点。 页面浏览日志采集流程 目前典型的网页访问过程是以客户端发送请求、服务器响应并返回所请求的内容进行的。...客户端日志采集 如果要进行日志采集的动作,需要在服务器响应并返回所请求的内容之后,对应页面的onload事件。...一般需要采集当前页面参数、浏览行为的上下文信息(如读取用户访问当前页面时的上一个页面)以及一些运行环境信息(如当前浏览器和分辨率等)。...日志采集实现思路 首先明确我们想要采集的数据-页面浏览日志和页面交互日志。正常情况下我们会在进入页面时发送日志信息,但是用户在每个页面的停留时间我们将很难统计到。

    2.4K41

    「经验」数据埋点很重要,这些内容你需要掌握『下篇』

    解决痛点:数据埋点如何设计?需要考虑哪些因素?是否有通用的设计方案? 00 序言 『上篇』小火龙和大家分享了埋点的作用,以及数分在其中担任的角色,可以戳蓝字部分进行回顾。...本文将分享一个通用的「埋点设计方案」,虽然埋点设计很多公司都是由产品同学负责,但数分同学需要做到把关,以及后期的数据校验,因此设计的方式及内容是需要掌握的。...01 埋点设计方案 埋点设计方案需要根据一定的规范,将每个点位记录在埋点文档中,用于开发及上线后的指标计算。因此,埋点设计需符合三项原则:规范化、简洁化、统一化,让应用者一眼就知道点位在描述什么。...埋点源于页面,因此在分享设计方案前,先看一下埋点同学眼中页面的布局。...预览器.首页.信息流.第六条新闻 = app.mainpage.news.2 了解了页面描述方式后,介绍一种相对通用的埋点设计方案,如下图: 1 页面名称「必填」 埋点是在页面基础上进行的,因此埋点设计需要梳理出业务的所有页面

    51930

    「经验」数据埋点很重要,这些内容你需要掌握『上篇』

    埋点需要上报哪些内容,主要由埋点的用途来决定,是用于「分析用户行为」还是「监控APP质量」,这两个方向的侧重点是不同的,分别列举一些需要记录的内容: 分析用户行为 用户所见:页面展现、内容曝光; 用户动作...监控APP质量 用户加载页面的时间; 用户播放视频卡顿的情况; 用户打开页面失败的情况。 02 如何进行埋点? 当了解了埋点的目的后,APP要如何进行埋点呢?...03 埋点核心流程 数据埋点上报,看似核心是埋点开发,但其实涉及到众多环节,以及不同部门之间的配合,分享一个相对通用的埋点流程,大家可以参考: 步骤一:埋点需求「涉及:产品 + 数分」 产品同学根据新页面的...UI样式,提出埋点需求,其中涵盖:页面样式、统计指标、记录内容、上报时机等。...步骤五:埋点验收「涉及:产品、数分」 当埋点开发并联调完成后,一般会由数分同学根据埋点文档,统计核心指标。再由产品同学判断数据是否符合预期。

    64011

    【愚公系列】2022年01月 Django商城项目 28-商品埋点统计功能实现

    文章目录 前言 1.埋点可分为:代码埋点、可视化埋点、无埋点 2.埋点数据统计可分为: 一、商品埋点统计功能实现 1.后台统计代码 2.前台请求接口代码 总结 前言 所谓“埋点”,是数据采集领域(尤其是用户行为数据采集领域...1.埋点可分为:代码埋点、可视化埋点、无埋点 代码埋点:在网页或者应用程序中中加上一些代码的,当用户触发相应行为时,进行数据上报,也就是代码埋点。...无埋点:无埋点是指开发人员集成采集 SDK 后,SDK 便直接开始捕捉和监测用户在应用里的所有行为,并全部上报,不需要开发人员添加额外代码。...2.埋点数据统计可分为: 客户端数据:页面点击数据,比如:tab栏的点击,某个icon的点击(各入口点击对比使用情况,统计页面点击行为的转化漏斗)。...一、商品埋点统计功能实现 1.后台统计代码 class VisitCategoryView(View): def get(self,request,category_id):

    1.1K00

    在Vue中如何不影响业务代码的情况下实现页面埋点

    由于在Vue中每一次的页面跳转都会进入路由的beforeEach和afterEach钩子函数,因此我们将借助路由实现业务代码无感知的埋点功能。...在此之前,需要保证项目中除了日志服务之外其他的请求都会经过一个入口方法,因为 我们会将日志信息进行聚合,避免发送过多的请求以减轻日志服务器的压力。...,但是用户在每个页面的停留时间我们将很难统计到。...因此考虑在离开页面时发送日志信息,并且在页面跳转时将上一个页面的一些信息也一并加入日志信息中。 客户端日志发送 在Vue中我们将在router.afterEach钩子函数里做这个操作。...此时我们可以考虑在主页面是加点击事件记录下当前页面的信息,鼠标位置等。

    1.7K31

    关于Android大数据收集,埋点统计的详细讲解以及案例代码分析附github代码

    关于Android大数据收集,埋点统计的详细讲解以及案例代码分析附github代码 一、背景分析 目前大数据的分析对一款成熟的APP来说至关重要,特别是商业性的APP和金融类的APP都会对用户的行为进行分析...为了能使我们的项目达到低耦合,高内聚,以及方便我们后续的维护,所以我们写代码不能采用代码埋点的方式,也就是说哪里需要埋哪里的这种观点。所以我们就要进行封装。...如果RecyclerView获取不到条目的埋点,只能通过设置标识来统计,这样我们传建一个基类,让需要通过反射获取埋点的来继承基类,这样,我们就不用遍历所有。...id到数组里面: /** * 埋点记录 * 需要埋点的统计的添加到数组里面 */ private void init() { Arrays = new Integer[]{R.id.login...TAG,就可以了,其实如果不考虑到性能的话我们,我们只通过这一个封装,只设置TAG就可以解决问题,但是需要注意,这里面有一个坑,fragment埋点的时候第一次点击没有效果,这就需要我们注意初始化问题了

    58110

    iOS数据埋点统计方案(附Demo): 运行时Method Swizzling机制与AOP编程(面向切面编程)

    技术选型: 手动复制统计的代码逻辑一个个地粘贴到需要统计的类和方法中去。工作量大,可维护性差,仅适用统计埋点极少的情况。...通过继承和重写系统方法 -- 利用写好统计的一个基类,让需要VC继承自该基类,或者调用重写过统计逻辑的按钮基类等等。...简单的分类,添加类方法或者示例方法 -- 将统计逻辑封装在分类方法里面,在需要统计的地方导入并调用分类方法。...替换系统方法的分类:通过运行时Runtime的办法 -- 利用Method Swizzling机制进行方法替换:替换原来的需要在里面统计却不含统计逻辑的方法 为 新的包含了统计逻辑的方法。...通过AOP的方法 -- 利用Aspect框架对需要进行统计的方法进行挂钩(hook),并注入包含了统计逻辑的代码块(block)。 2.

    91510

    用户行为数据采集:常见埋点方案优劣势对比及选型建议

    曾遇到过,C端产品要出某一新上线功能的数据效果作工作汇报,找到数据分析或数据产品经理,数据同学问”你埋点了么?”,C端PM一脸懵逼,“埋点不是数据团队做的事情么?”。...,或某个商品,在埋点统计时,需要记录页面(page)、区块位置(Block)、元素(item)。...后,可自动采集数据,无需按需开发,节省开发成本 页面可见元素均可自动采集,数据更全面 埋点流程简单,业务使用埋点系统自助定义事件,新增埋点需求无需业务开发参与 缺点 动态页面或页面不可见行为数据无法采集...可视化埋点 默认不采集数据,当数据分析人员通过设备连接用户行为分析工具的数据接入管理界面,在页面可视化定义需要采集的位点后下发采集请求,采集代码生效 优点: 默认不上报数据,可视化圈选才按需触发埋点,节约存储和传输成本...目前最常用的方案是代码埋点+全埋点组合使用。即用全埋点统计App(小程序)内用户基础的行为事件的PV/UV等数据,用代码埋点补充全埋点无法覆盖的场景,最终实现全面的精细化用户行为分析。

    5.4K20
    领券