监控平台之pvuv/点击事件/路由上报

2024-09-04 03:36

本文主要是介绍监控平台之pvuv/点击事件/路由上报,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

pv/uv上报方式
// 这里是pv的上报方式
// 可以用自定义标签定义data-spider,通过body-parser等方式获取body标签的值,进行上报
// export default function pv() {const reportData = {type: 'behavior',subType: 'pv',startTime: performance.now(),pageUrl: window.location.href,uid: generateUniqueId(),referrer: window.referrer,}lazyReportBatch(reportData) 
}// 可以自定义按钮的上报函数,暴露给外部调用
export default function funPV(options) {const reportData = {type: 'behavior',subType: 'pv',startTime: performance.now(),pageUrl: window.location.href,uid: generateUniqueId(),referrer: window.referrer,}for (const key in options) {if (reportData.hasOwnProperty(key)) {reportData[key] = options[key];}}lazyReportBatch(reportData) 
}
点击事件上报

监听mousedown,touchstart进行监听点击事件,

import {lazyReportBatch} from "../report"export default function click() {['mousedown', 'touchstart'].forEach(eventType => {window.addEventListener(eventType, e => {const target = e.target;if (!target.tagName) {return}const reportData = {type: 'behaviour',subType: 'click',pageUrl: window.location.href,target: target.tagName,clientX: e.clientX,clientY: e.clientY,startTime: e.timeStamp,innerHtml: target.innerHtml,outerHtml: target.outerHtml,width: target.offsetWidth,height: target.offsetHeight,path: e.path}lazyReportBatch(reportData) })})
}
路由上报

分为hashchange和popstate,根据是否有#进行分别,区别如下

hashChange 触发条件

hash是URL中#后面那部分,同时修改hash值不会引起页面的刷新,也不会向服务器重新发送请求。通过hashchange事件可以监听它的变化。改变hash值有以下三种方式:

  • 浏览器前进后退改变URL
  • 通过a标签锚点方式改变URL。
  • 通过window.location.hash改变URL
  • 调用history的back、go、forward方法

不能触发事件的方式

  • pushState和replaceState

备注:以上三种方式均可以触发hashchang事件, pushState和replaceState均不能触发hashchang事件

popstate触发条件

history提供了popstate监听事件,但是只有以下两种情况会触发该事件

  • 点击浏览器前进后退的按钮
  • 显示调用history的back、go、forward方法
  • 不能触发事件的方式

pushState和replaceState

  • a标签不能触发,因为非锚点模式直接跳转了页面。

这里记录了路由的from路径和to路径,根据业务具体需求上报参数

import {lazyReportBatch} from "../report"
import {generateUniqueId} from "../../utils"export default function pageChange(data) {// hash historylet oldUrl = ''window.addEventListener('hashchange', function(event) {const newUrl = window.location.href;const reportData = {from: oldUrl,to: newUrl,type: 'behavior',subType: 'hashchange',pageUrl: window.location.href,startTime: this.performance.now(),uuid: generateUniqueId(),}lazyReportBatch(reportData) oldUrl = newUrl;}, true); // 点击后退前进的时间let from = ''window.addEventListener('poststate', function(event) {const to = window.location.href;const reportData = {from,to,type: 'behavior',subType: 'poststate',pageUrl: window.location.href,startTime: this.performance.now(),uuid: generateUniqueId(),}lazyReportBatch(reportData) from = to;}, true); 
} 

这篇关于监控平台之pvuv/点击事件/路由上报的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1134884

相关文章

springboot2.1.3 hystrix集成及hystrix-dashboard监控详解

《springboot2.1.3hystrix集成及hystrix-dashboard监控详解》Hystrix是Netflix开源的微服务容错工具,通过线程池隔离和熔断机制防止服务崩溃,支持降级、监... 目录Hystrix是Netflix开源技术www.chinasem.cn栈中的又一员猛将Hystrix熔

Go语言使用Gin处理路由参数和查询参数

《Go语言使用Gin处理路由参数和查询参数》在WebAPI开发中,处理路由参数(PathParameter)和查询参数(QueryParameter)是非常常见的需求,下面我们就来看看Go语言... 目录一、路由参数 vs 查询参数二、Gin 获取路由参数和查询参数三、示例代码四、运行与测试1. 测试编程路

Django中的函数视图和类视图以及路由的定义方式

《Django中的函数视图和类视图以及路由的定义方式》Django视图分函数视图和类视图,前者用函数处理请求,后者继承View类定义方法,路由使用path()、re_path()或url(),通过in... 目录函数视图类视图路由总路由函数视图的路由类视图定义路由总结Django允许接收的请求方法http

SpringBoot监控API请求耗时的6中解决解决方案

《SpringBoot监控API请求耗时的6中解决解决方案》本文介绍SpringBoot中记录API请求耗时的6种方案,包括手动埋点、AOP切面、拦截器、Filter、事件监听、Micrometer+... 目录1. 简介2.实战案例2.1 手动记录2.2 自定义AOP记录2.3 拦截器技术2.4 使用Fi

Spring Boot Actuator应用监控与管理的详细步骤

《SpringBootActuator应用监控与管理的详细步骤》SpringBootActuator是SpringBoot的监控工具,提供健康检查、性能指标、日志管理等核心功能,支持自定义和扩展端... 目录一、 Spring Boot Actuator 概述二、 集成 Spring Boot Actuat

Linux之platform平台设备驱动详解

《Linux之platform平台设备驱动详解》Linux设备驱动模型中,Platform总线作为虚拟总线统一管理无物理总线依赖的嵌入式设备,通过platform_driver和platform_de... 目录platform驱动注册platform设备注册设备树Platform驱动和设备的关系总结在 l

一文解密Python进行监控进程的黑科技

《一文解密Python进行监控进程的黑科技》在计算机系统管理和应用性能优化中,监控进程的CPU、内存和IO使用率是非常重要的任务,下面我们就来讲讲如何Python写一个简单使用的监控进程的工具吧... 目录准备工作监控CPU使用率监控内存使用率监控IO使用率小工具代码整合在计算机系统管理和应用性能优化中,监

Zabbix在MySQL性能监控方面的运用及最佳实践记录

《Zabbix在MySQL性能监控方面的运用及最佳实践记录》Zabbix通过自定义脚本和内置模板监控MySQL核心指标(连接、查询、资源、复制),支持自动发现多实例及告警通知,结合可视化仪表盘,可有效... 目录一、核心监控指标及配置1. 关键监控指标示例2. 配置方法二、自动发现与多实例管理1. 实践步骤

prometheus如何使用pushgateway监控网路丢包

《prometheus如何使用pushgateway监控网路丢包》:本文主要介绍prometheus如何使用pushgateway监控网路丢包问题,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录监控网路丢包脚本数据图表总结监控网路丢包脚本[root@gtcq-gt-monitor-prome

Spring Boot集成Druid实现数据源管理与监控的详细步骤

《SpringBoot集成Druid实现数据源管理与监控的详细步骤》本文介绍如何在SpringBoot项目中集成Druid数据库连接池,包括环境搭建、Maven依赖配置、SpringBoot配置文件... 目录1. 引言1.1 环境准备1.2 Druid介绍2. 配置Druid连接池3. 查看Druid监控