本文介绍: 整篇文章侧重于性能监控方面,关于用户行为监控可能更多的需要产品经理探讨,根据监控数据改变业务策略,来不断提升用户的留存和转化。性能监控,涉及的面比较广、链路比较长,针对前端开发掌握常见的监控指标理解监控的整个链路

Web前端监控的方案

前端监控是一个非常重要的话题,对于业务的发展意义重大,就像遍布在城市各处的探头,实时监测整座城市运行状况,保证系统稳定、高效运行

前端监控的意义

前端监控,对于业务和团队的重要性,不言而喻,是前端领域绕不开的一个话题。最大的意义是能了解系统运行状态哪些地方还有优化空间,让App网站运行的更流畅,从技术的角度为业务赋能,获取到更多的潜在用户。

著名的 2-5-8 原则

监控的内容

主要包括 用户行为程序异常、运行性能三方面的内容

本文更侧重于介绍 用户行为数据 和 运行指标上报监控链路程序异常的异常监控一般会采用业界的主流方案比如sentry 这样的监控系统辅助处理系统的错误异常。

监控的形式

监控的形式,主要分为两类:主动监控 和 被动监控。

总体方案设计

一般监控系统,都是经过页面埋点数据上报后台存储汇总统计报警展示优化整改等几个环节,每个环节都可以采用不同方案来迎合业务的需求

image-1.png

监控指标范围

在页面埋点时,选择哪些指标十分重要,需要和业务方统一好口径。一个完善的监控系统,监控的指标要全面、细粒度、易于量化等。

性能指标

常见性能指标
  1. FP 白屏(First Paint表示网页上的第一个像素绘制时间
  2. FCP 首屏(first contentful paint ) 首次内容绘制时间(首次绘制文本图片包含背景图)、非白色的canvas或SVG时才被算作FCP)
  3. FMP 首次有意义的绘制(First Meaningful Paint )首次有意义的内容绘制时间网页上的主体区域展示出来的时间
  4. TTI (Time To Interactive)可交互时间应用视觉上都已渲染出了,完全可以应用户的输入了。是衡量应用加载所需时间能够快速响应用户交互指标
  5. TBT(total blocking time )总阻塞时间度量了FCP 和 TTI之间的总时间
  6. CLS(Cumulative Layout Shift) 累计布局位移,发生的每个意外的布局移位的所有单独布局移位分数总和,衡量页面的视觉稳定性的指标
  7. FPS(Frames Per Second每秒帧率,每秒钟画面更新次数动画相关的指标,当FPS太低的时候,会感觉页面卡顿
  8. DCL (DOMContentLoaded)HTML 文档被完全加载解析完成之后,DOMContentLoaded 事件触发,无需等待样式图片iframe的完成加载

以上的指标,可以借助浏览器我们提供的performance API(window.performance)来计算

image-2.png


const timing = performance.timing // DNS 解析耗时 
timing.domainLookupEnd - timing.domainLookupStart // TCP 连接耗时 
timing.connectEnd - timing.connectStart // SSL 安全连接耗时 
timing.connectEnd - timing.secureConnectionStart // 网络请求耗时
timing.responseStart - timing.requestStart // 数据传输耗时 
timing.responseEnd - timing.responseStart // DOM 解析耗时 
timing.domInteractive - timing.responseEnd // 资源加载耗时 
timing.loadEventStart - timing.domContentLoadedEventEnd /* 关键性能指标 */ // 首包时间 
timing.responseStart - timing.domainLookupStart // 白屏时间
timing.responseStart - timing.navigationStart // 首次可交互时间 
timing.domInteractive - timing.requestStart // HTML 加载完成时间, 即 DOM Ready 时间 
timing.domContentLoadedEventEnd - timing.navigationStart // 页面完全加载时间 
timing.loadEventStart - timing.navigationStart

Google Web Vitals使用者体验量化

谷歌认为之前的标准复杂,指标太多了。Google 于 2020 年 5 年 5 日提出了新的使用者体验量化方式,推出 Web Vitals简化这个学习曲线大家只要观注 Web Vitals 指标表现即可。加载性能LCP,交互性FID,视觉稳定性CLS。只需要做好这三个,网站性能基本上就可以了。

image.png

测量Web Vitals的工具有很多,比如Lighthouse,webvitals浏览器插件web vitals

用户指标

UV(用户访问数)、PV(页面被访问次数)、用户的留存率、转化率等等一般和业务耦合比较深,没有通用的范式。在采集时,结合业务需要,在特定的地方埋点,选择统计的表达式

image-4.png

此时的UV = 3,PV = 10

  • 秒开率 应用在1秒(或1~2秒)内打开的用户占有率
  • 用户留存 在所有的访问用户中,有多少是DAU(日活跃用户),月活,
  • 用户转化 在所有的到访用户群体中,有多少购买了产品服务,转化成了业务收益

怎么留住老用户,吸引更多的新用户,将潜在的用户群体转化成业务的客户,是产品抉择过程考虑的一个重要问题。这是通过控系统,能拿到一手的数据,辅助产品的未来规划和决策。

前端埋点方案

页面买点主要有以下三种处理方式

综合考虑推荐采用动态埋点的方案,比较灵活,实现高效配置,不需要修改业务代码,只要在业务项目中引入基础SDK,实现无侵入式的前端监控。

上报逻辑

推荐使用最后一种方案navigator.sendBeacon(), 可用于通过 HTTP POST 将少量数据 异步 传输到 Web 服务器


navigator.sendBeacon(url); navigator.sendBeacon(url, data); // 页面隐藏时,上报数据 
document.addEventListener("visibilitychange", 
    function logData() { 
        if (document.visibilityState === "hidden") {
            navigator.sendBeacon("/log", analyticsData); 
        } 
    }
);

当用户代理成功把数据加入传输队列时,sendBeacon() 方法将返回 true,否则返回 false

使用 sendBeacon() 方法使用代理在有机会时异步地向服务器发送数据,同时不会延迟页面的卸载影响下一导航载入性能,这意味着:

监控数据的存储

管理平台展示

image-3.png

  1. 当业务项目,想要接入前端监控时,先在平台注册一下,生成一个唯一的监控项目ID和监控SDK脚本。
  2. 在业务项目引入SDK脚本后,业务方的代码中就不会再出现监控相关的逻辑
  3. 后续在监控平台配置业务项目的埋点信息即可,一般通过绑定DOM事件,来动态生成监控脚本,下发到监控页面中
  4. 业务项目上线后,如果要调整埋点配置,无需修改业务代码,在监控平台配置后,直接发布即可
  5. 当后续有新版的监控脚本发布,SDK会自动拉取最新的监控配置,应用到业务终端页面

image-5.png

根据监控上报的数据,可以在管理平台利用BFF层做数据的二次加工,生成各种维度的数据,丰富统计类型更好地指导业务。

在项目上线初期,数据波动比较大,需要在平台根据情况调整监控的埋点位置阈值的参数、增加或删减一个埋点等

报警通知

原理: 通过启动定时任务读取配置表,根据不同规则读取es里面的数据(一分钟查询一次),如果有错误,则通知报警

报警通知的形式有:短信邮件、平台消息企业IM等,当某些监控指标出现异常时,需要通知到相关人员,及时处理。可以根据报警的级别,下发不同的通知形式。

  • 严重且紧急的报警,一般通过短信、企业IM通知
  • 正常的报警,一般通过邮件发送
  • 无需特别处理的报警,在平台上展示消息即可

举个例子性能标准是首屏时间 1.5s,秒开率 90%,如果超出 10%,平台上会标红展示,并会发企业微信报警通知;如果超过 20%,会发邮件报警;如果超出 30%,会发短信报警通知。

优化整改

提升前端的性能,涉及的面比较广,比如提升首屏的秒开率。可以通过一下方式

image-7.png

  1. 懒加载 只展示首屏可视区域内的元素延迟加载首屏外的资源,尤其是图片视频
  2. 缓存合理设置缓存策略,强缓存 + 协商缓存合理搭配,JS、CSS、图片上传CDN,设置缓存
  3. 开启 serviceworker,保证离线下能正常展示,充分支持PWA
  4. 并行化,尽量支持HTTP2.0,开始数据传输的多通道模式,避免请求阻塞

除此之外,还有白屏优化DNS优化支持HTTPS负载均衡等优化措施

  • 用户留存低:

提升应用的市场率,一个综合且漫长的过程,是运营产品、技术等共同协作目标

image-6.png

利用监控结果,来调整新的策略综合施策,来适应应用场景,不断留住用户

总结

整篇文章侧重于性能监控方面,关于用户行为监控可能更多的需要和产品经理探讨,根据监控数据改变业务策略,来不断提升用户的留存和转化。 性能监控,涉及的面比较广、链路比较长,针对前端开发掌握常见的监控指标,理解监控的整个链路。

原文地址:https://blog.csdn.net/dlnu2015250622/article/details/134767389

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_38046.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注