当前位置: 首页 > article >正文

前端埋点、监控

埋点

  • 埋点主要用于手机用户行为数据。在日常开发中我们会通过在前端代码中插入代码或脚本的方式来实现埋点功能。
  • 埋点的主要作用就是:捕获特定用户行为(如点击、浏览、提交表单、页面跳转等)以及关键业务数据(如下单金额、商品类别等)
  • 在日常开发中,埋点实现方案大致可以分为以下三大类:
    • 手动埋点:在代码中手动加入记录代码来捕获特定事件
    • 自动埋点:利用DOM事件代理等技术捕获页面上所有事件,从而减少手动配置
    • 可视化埋点:通过工具界面标记需要采集的元素和事件,可以不用手写代码

监控

监控主要关注系统的性能和稳定性。在日常开发中,我们会通过 采集页面加载时间、资源请求、错误日志等数据 的方式来实现前端监控。

  • 在日常开发中,监控一般需要完成以下三大部分:
    • 性能监控:如首屏加载时间、页面交互耗时、资源加载耗时等。
    • 错误监控:捕获JavaScript错误、网络请求失败、资源加载异常等。
    • 用户体验监控:收集白屏、卡顿等影响用户体验的问题等。
<body>
    <button id="myBtn">保存</button>
    <script>
        function trackEvent(eventType, details) {
            fetch("/上报URL",)
        }

        myBtn.addEventListener("click", function () {
            trackEvent("button_click", {
                id: "save_001",
                timeStamp: Date.now()
            })
        })
    </script>
</body>
<script>
        function trackEvent(eventType, details) {
            console.log(eventType, details)
            // fetch("/上报URL",)
        }

        // 页面什么时候加载完成
        window.addEventListener('load', function () {
            const pageLoadTime = performance.now();

            trackEvent('page_load', {
                duration: pageLoadTime
            })
        })

        // API调用耗时监控
        function apiPerformance() {
            const start = performance.now();

            fetch("请求的接口").then(rew => res.json()).then(data => {
                const duration = performance.now() - start
                trackEvent("api_call", {
                    duration,
                    endpoint: "请求的接口"
                })
            })
        }

    </script>

异常处理

  • 可疑区域增加 try-catch
  • 全局监控 JS 异常 window.onerror
  • 全局监控静态资源异常 window.addEventListener
  • 捕获没有 catchPromise 异常用 unhandledrejection
  • Vue errorHandlerReact componentDidCatch
  • Axios 请求统一异常处理用拦截器 interceptors
  • 使用日志监控服务收集用户错误信息(如sentry、bugly)

http://www.kler.cn/a/395517.html

相关文章:

  • 博物馆实景复刻:开启沉浸式文化体验的新篇章
  • SpringBoot开发——整合AJ-Captcha实现安全高效的滑动验证码
  • C++ 判断语句的深入解析
  • 大模型研究报告 | 2024年中国金融大模型产业发展洞察报告|附34页PDF文件下载
  • nVisual自定义工单内容
  • sealos部署K8s,安装docker时master节点突然NotReady
  • 如何保证MySQL与Redis缓存的数据一致性?
  • PC上浏览器是如何查询DNS 缓存的呢?
  • 自建k8s集群,利用开源的GitLab、Jenkins和Harbor实现CI/CD和DevOps的过程回顾
  • Redis 概 述 和 安 装
  • C++初阶——stack
  • 服务器被挂马怎么办?——解决服务器被挂马的方法和步骤
  • 10款录屏工具个人使用感分享!!!!!!
  • 用MVVM设计模式提升WPF开发体验:分层架构与绑定实例解析
  • 深度学习之GAN应用
  • Springboot 整合 itext 实现PDF文件合并,识别图片则转成PDF拼接
  • C++图案例大全
  • 算法----阶乘问题
  • java算法性能调优:详尽探讨时间复杂度与空间复杂度的分析与优化“
  • 3D Web渲染引擎HOOPS Communicator:助力企业打造定制化3D可视化产品的强大工具
  • 后端:Spring AOP原理--动态代理
  • 联邦学习的未来:深入剖析FedAvg算法与数据不均衡的解决之道
  • 游戏引擎学习第九天
  • Javascript高级—搜索算法
  • Kafka节点服役和退役
  • 单片机_day4_串口通信