最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 前端性能监控平台架构设计

    正文概述 掘金(bigtree)   2021-04-27   894

    前端性能监控平台架构设计

    背景知识准备:博主的姊妹篇:真实用户的前端性能监控

    此篇博文偏实操,记录真实的前端性能监控平台是怎么诞生的

    先看看 性能监控平台 的效果(公司敏感原因,以下放的是一张类似的网图)

    • 平台的好处:可以很方便的对web性能参数进行监控

    前端性能监控平台架构设计

    过多的背景介绍和平台带来的收益就不多说了,具体可以参考 博主的姊妹篇:真实用户的前端性能监控

    直接进入正题

    如何设计这个平台的架构

    前端性能监控平台架构设计

    以下会分3步详解具体的实现

    1. 增加javascript脚本(步骤1)(如图)
    2. 后台(步骤2)(如图)
    3. 性能监控平台(前端可视化展示)

    1. 增加javascript脚本(步骤1)(如图)

    一、脚本怎么引入

    放在index.html的页尾,用外链引入这段脚本。或动态添加script标签

    • 为什么要这样做? - 不影响首屏速度
    <!DOCTYPE html>
    <html>
      <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
        <title>xx</title>
      </head>
      <body>
        <div id="app"></div>
        <script  src="./cdn/performance.js"></script>
      </body>
    </html>
    

    二、脚本怎么写

    发请求(可以用原生api:fetch),把性能参数传到后台

    function getPerformanceData () {
        let performanceData = ''
        console.log(window.performance)
        console.log(window.performance.getEntriesByType('resource'))
        console.log(window.chrome.loadTimes())
        // ...省略处理细节,简单筛选,前端不用做过多处理,统一在后端处理
        return performanceData
    }      
    
    setTimeout(() => { // 保证性能参数肯定准备好了
        fetch('/xx/xx/xxxx/你的服务器地址', {
            method: 'POST',
            headers: {
                'Content-Type': 'application/json;charset=utf-8'
            }, 
            body: JSON.stringify(getPerformanceData()) 
        }) 
    }, 2000)
    

    2. 后台(步骤2)

    此后台不会很复杂,前端也可以直接写。博主用node+koa实现

    具体哪些性能参数需要计算出来(前端不做计算),建议直接看:博主的姊妹篇:真实用户的前端性能监控 里面的 《1. 真实用户前端性能数据采集》 和《3. 监控系统指标定义及加工计算》(部分截取如下:)

    目标指标计算方式定义
    DNS解析时间domainLookupEnd - domainLookupStart从发起页面域名解析至完成TCP建立连接时间connectEnd - connectStart从发起TCP连接至三次握手完成请求等待时间responseStart - requestStart从发起页面请求至服务器返回第一个字节文档下载时间responseEnd - responseStart从接收服务器返回第一个字节至主页面下载完成备注:以上都是各时间段耗时,以下都是total_time,以StartTime为基准首字节时间responseStart - StartTime页面DomReadydomContentLoadedEventEnd - StartTime页面白屏时间window.chrome.loadTimes().firstPaintTime*1000 - StartTime页面首屏完成FirstScreenTime(这个值需要手动埋入代码内, 如下代码展示) - StartTime页面加载完成时间loadEventEnd - StartTime

    3. 性能监控平台(前端可视化展示)

    前端实现可视化可以用第三库:

    echarts 或 antv


    原创整理,有错误可留言,如有用,谢谢点赞~


    性能优化合集快速入口:

    • 如何制定前端资源的最佳缓存策略?
      • 浏览器缓存的起点 -> Cache-Control
      • 浏览器缓存机制(结合响应头)
    • <link>和<script>和dom解析渲染之间的关系
      • 浏览器多进程架构简介
    • 理解web性能概念以及常用分析工具
      • web性能分析工具 PageSpeed Insights 和 Lighthouse 使用教程
    • web性能-白屏时间详解以及优化
      • web性能-HTML和CSS优化
      • web性能-图片优化
      • web性能-字体优化
      • web性能-js优化
      • web性能-优化dom操作(重排 重绘)
      • TCP传输基本原理简述及优化
      • web性能-CDN架构介绍和优化
        • webpack工程项目中配置第三方库的CDN,并做CDN容错
    • 真实用户的前端性能监控
    • 前端性能监控平台架构设计

    起源地下载网 » 前端性能监控平台架构设计

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元