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

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 快速学习网站流量日志埋点收集—原理实现雏形—如何解决 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的问题。

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
12天前
|
Web App开发 移动开发 HTML5
html5 + Three.js 3D风雪封印在棱镜中的梅花鹿动效源码
html5 + Three.js 3D风雪封印在棱镜中的梅花鹿动效源码。画面中心是悬浮于空的梅花鹿,其四周由白色线段组成了一个6边形将中心的梅花鹿包裹其中。四周漂浮的白雪随着多边形的转动而同步旋转。建议使用支持HTML5与css3效果较好的火狐(Firefox)或谷歌(Chrome)等浏览器预览本源码。
42 2
|
22天前
|
前端开发 测试技术 定位技术
如何利用HTML和CSS构建企业级网站的全过程。从项目概述到页面结构设计,再到HTML结构搭建与CSS样式设计,最后实现具体页面并进行优化提升,全面覆盖了网站开发的关键步骤
本文深入介绍了如何利用HTML和CSS构建企业级网站的全过程。从项目概述到页面结构设计,再到HTML结构搭建与CSS样式设计,最后实现具体页面并进行优化提升,全面覆盖了网站开发的关键步骤。通过实例展示了主页、关于我们、产品展示、新闻动态及联系我们等页面的设计与实现,强调了合理布局、美观设计及用户体验的重要性。旨在为企业打造一个既专业又具吸引力的线上平台。
46 7
|
1月前
html页面点击按钮实现页面跳转功能
html页面点击按钮实现页面跳转
60 11
|
1月前
|
前端开发 JavaScript
用HTML CSS JS打造企业级官网 —— 源码直接可用
必看!用HTML+CSS+JS打造企业级官网-源码直接可用,文章代码仅用于学习,禁止用于商业
124 1
|
1月前
|
前端开发 JavaScript 安全
HTML+CSS+JS密码灯登录表单
通过结合使用HTML、CSS和JavaScript,我们创建了一个带有密码强度指示器的登录表单。这不仅提高了用户体验,还帮助用户创建更安全的密码。希望本文的详细介绍和代码示例能帮助您在实际项目中实现类似功能,提升网站的安全性和用户友好性。
46 3
|
21天前
太便利了 !通义灵码方便生成html页面
太便利了 !通义灵码方便生成html页面
47 0
|
29天前
|
JavaScript 前端开发 Java
SpringBoot项目的html页面使用axios进行get post请求
SpringBoot项目的html页面使用axios进行get post请求
37 0
|
1月前
|
XML 安全 Java
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
本文介绍了Java日志框架的基本概念和使用方法,重点讨论了SLF4J、Log4j、Logback和Log4j2之间的关系及其性能对比。SLF4J作为一个日志抽象层,允许开发者使用统一的日志接口,而Log4j、Logback和Log4j2则是具体的日志实现框架。Log4j2在性能上优于Logback,推荐在新项目中使用。文章还详细说明了如何在Spring Boot项目中配置Log4j2和Logback,以及如何使用Lombok简化日志记录。最后,提供了一些日志配置的最佳实践,包括滚动日志、统一日志格式和提高日志性能的方法。
279 30
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
|
8天前
|
监控 安全 Apache
什么是Apache日志?为什么Apache日志分析很重要?
Apache是全球广泛使用的Web服务器软件,支持超过30%的活跃网站。它通过接收和处理HTTP请求,与后端服务器通信,返回响应并记录日志,确保网页请求的快速准确处理。Apache日志分为访问日志和错误日志,对提升用户体验、保障安全及优化性能至关重要。EventLog Analyzer等工具可有效管理和分析这些日志,增强Web服务的安全性和可靠性。
|
2月前
|
XML JSON Java
Logback 与 log4j2 性能对比:谁才是日志框架的性能王者?
【10月更文挑战第5天】在Java开发中,日志框架是不可或缺的工具,它们帮助我们记录系统运行时的信息、警告和错误,对于开发人员来说至关重要。在众多日志框架中,Logback和log4j2以其卓越的性能和丰富的功能脱颖而出,成为开发者们的首选。本文将深入探讨Logback与log4j2在性能方面的对比,通过详细的分析和实例,帮助大家理解两者之间的性能差异,以便在实际项目中做出更明智的选择。
313 3
下一篇
DataWorks