网站流量日志埋点收集— 原理实现雏形—如何解决 js 和 html 页面耦合问题|学习笔记

简介: 快速学习网站流量日志埋点收集—原理实现雏形—如何解决 js 和 html 页面耦合问题

开发者学堂课程【大数据分析之企业级网站流量运营分析系统开发实战(第一阶段)网站流量日志埋点收集—原理实现雏形—如何解决 js 和 html 页面耦合问题】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/693/detail/12170


网站流量日志埋点收集—原理实现雏形—如何解决 js 和 html 页面耦合问题


内容简介

一、原理分析及示例

二、理论分析存在的问题和解决方法

本节内容我们学习埋点采集我们用户的行为数据,通过讲义中的原理图和我们所画的雏形图去更好的理解其中的知识点和特性。


一、原理分析及示例

首先,用户的行为会触发浏览器对被统计页面的一个 http 请求,比如打开某网页。当网页被打开,页面中的埋点javascript 代码会被执行。

image.png

埋点是指:在网页中预先加入小段 javascript 代码,这个代码片段一般会动态创建一个 script 标签,并将 src 属性指向一个单独的 js 文件,此时这个单独的 js 文件(图中绿色节点)会被浏览器请求到并执行,这个 js 往往就是真正的数据收集脚本。

数据收集完成后,js 会请求一个后端的数据收集脚本(图中的 backend),这个脚本一般是一个伪装成图片的动态脚本程序,js_会将收集到的数据通过 http 参数的方式传递给后端脚本,后端脚本解析参数并按固定格式记录到访问。

示例:针对首页的 A 标签进行相关收集,该如何实现埋点?以及需要考虑哪些具体实际性能的问题。

一个 html 页面是各种标签的相关组成,它的根标签是 html,里面有 body 等。为了更方便我们,这时使用 Hbuilder 来做页面相关分析。

如图:

image.png

在 body 中写一个 a 标签,就是链接标签:<a id=“myid”></a>

再写a标签的跳转链接 <a id=“myid”href=”www.baidu.com“target=”_blank”></a> 打开一个新的标签页,接下来定义需求:对页面上的 a 标签被点击多少次进行统计。按照埋点代码来操作,需要在 Hbuilder 中写 script 标签:<script type=”text/javascript“>  ,接下来写伪代码,比如说要想统计 a 标签被统计多少次,我们首先需要选定a 标签给它绑定一个 click 事件: $(a).click({ (一旦用户点击标签,就将触发请求),伪代码为:$.ajax(‘‘’localhost://collect?num=1’’)

所以一旦用户点击标签<a id=“myid”href=”www.baidu.com“target=”_blank”></a>,这个事件触发,触发后向后台发送请求,会向后台发送1,后面会进行累加就可知道点击几次。

所以在此页面上,埋点代码是谁呢?

image.png

这就是我们从理论层面来推导要想进行用户的行为数据收集,大概需要做的事情。


二、理论分析存在的问题和解决方法

理论层面推导起来简单,但我们知道一个项目要想能够上线运行,需要追求很多性能问题,接下来剖析当中两点值得考虑的问题。

我们现在的方式是把我们的 js 写死在页面中,即和 html 耦合在一起。那么如果我们下次不再收集 a 标签事件,我们收集其他标签事件,其他标签的点击数据,那这时候该如何操作?

所以问题1:采集数据的 js 和 html 页面写死在一起,耦合性太强,不利于后续的 js 维护。

针对这个问题,利用 src 属性引用 js 文件

我们需要把这段 js 逻辑踢出,让它成为js的文件(新建一个叫 javascript 的文件,名称为 collect.js 。)

image.png

如果需要再次使用可以通过 src 属性引入

同样这段代码还是我们的埋点代码,只不过埋点代码的逻辑未写死在页面上,而是写在 collect.js 文件中,后续需要修改只需要修改文件里的逻辑即可,这样避免页面和js耦合一起。

所以解决方法为:

把收集数据的 js 提取出来,变成一个单独的文件,通过 script 标签的 src 属性引入。但要注意我们的 script 标签功能不止这些,现在我们的 js 是在同一个项目的根目录下,但实际上 js 文件可以位于任何联网的机器上。

image.png

所谓的相对引入是我们的 js 文件位于项目的同一台机器上,指定路径就可以引入进来。

绝对引入指的是 js 文件可以位于任何联网的机器上,只要通过网络就可以拉进来,这样就解决了 js 和 html的问题。

相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
相关文章
|
3月前
|
编解码 前端开发 JavaScript
js react antd 实现页面低分变率和高分变率下字体大小自适用,主要是配置antd
在React中结合Ant Design与媒体查询,通过less变量和响应式断点动态调整`@font-size-base`,实现多分辨率下字体自适应,提升跨设备体验。
193 2
|
JavaScript 前端开发 程序员
前端原生Js批量修改页面元素属性的2个方法
原生 Js 的 getElementsByClassName 和 querySelectorAll 都能获取批量的页面元素,但是它们之间有些细微的差别,稍不注意,就很容易弄错!
292 1
|
10月前
|
数据采集 JavaScript Android开发
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
502 7
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
|
11月前
|
人工智能 程序员 UED
【01】完成新年倒计时页面-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
【01】完成新年倒计时页面-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
561 21
【01】完成新年倒计时页面-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
|
10月前
|
前端开发
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
309 1
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
|
11月前
|
前端开发 JavaScript
【02】v1.0.1更新增加倒计时完成后的放烟花页面-优化播放器-优化结构目录-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
【02】v1.0.1更新增加倒计时完成后的放烟花页面-优化播放器-优化结构目录-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
369 14
【02】v1.0.1更新增加倒计时完成后的放烟花页面-优化播放器-优化结构目录-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
|
9月前
|
人工智能 运维 监控
一招高效解析 Access Log,轻松应对泼天流量
一招高效解析 Access Log,轻松应对泼天流量
183 0
一招高效解析 Access Log,轻松应对泼天流量
|
9月前
|
JavaScript 前端开发 API
纯js轻量级页面顶部Loading进度条插件
纯js轻量级页面顶部Loading进度条插件
|
JSON 监控 JavaScript
Node.js-API 限流与日志优化
Node.js-API 限流与日志优化
|
Web App开发 前端开发 JavaScript
JavaScript动态渲染页面爬取——Selenium的使用(一)
JavaScript动态渲染页面爬取——Selenium的使用(一)
510 4