前端监控五性能监控和最佳实践

performance

https://developer.mozilla.org/zh-CN/docs/Web/API/PerformanceTiming
https://developer.mozilla.org/zh-CN/docs/Web/API/Performance/getEntriesByType
https://developer.mozilla.org/zh-CN/docs/Web/API/Performance/now

performance.now()

记录重要函数执行时间

const t0 = window.performance.now();
doSomething();
const t1 = window.performance.now();
console.log("doSomething 函数执行了" + (t1 - t0) + "毫秒。")

和 JavaScript
中其他可用的时间类函数(比如Date.now)不同的是,window.performance.now()返回的时间戳没有被限制在一毫秒的精确度内,相反,它们以浮点数的形式表示时间,精度最高可达微秒级。

另外一个不同点是,window.performance.now()是以一个恒定的速率慢慢增加的,它不会受到系统时间的影响(系统时钟可能会被手动调整或被
NTP 等软件篡改)。另外,performance.timing.navigationStart + performance.now()
约等于 Date.now()。

页面停留时间

let pageShowTime = 0
let timeOnPage = 0
window.addEventListener('pageshow', () => {
    pageShowTime = performance.now()
     // 页面性能指标上报
    reportWebVitals((data) => {
      this.performanceReport({ data })
    })
    // 执行 onPageShow
    this.onPageShow();
  })
 
window.addEventListener('pagehide', () => {
  // 记录用户在页面停留时间
 timeOnPage = performance.now() - pageShowTime

FCP首屏时间

首次内容绘制 (FCP) 指标测量页面从开始加载到页面内容的任何部分在屏幕上完成渲染的时间。
来自 google.com 的 FCP 时间轴
在上方的加载时间轴中,FCP 发生在第二帧,因为那是首批文本和图像元素在屏幕上完成渲染的时间点。

您会注意到,虽然部分内容已完成渲染,但并非所有内容都已经完成渲染。

计算方法

new PerformanceObserver((entryList) => {
  for (const entry of entryList.getEntriesByName('first-contentful-paint')) {
    console.log('FCP candidate:', entry.startTime, entry);
  }
}).observe({type: 'paint', buffered: true});

https://developer.mozilla.org/zh-CN/docs/Web/API/PerformanceObserver

window.performance.timing

PerformanceTiming 接口是为保持向后兼容性而保留的传统接口,并且提供了在加载和使用当前页面期间发生的各种事件的性能计时信息。

因为 Navigation Timing 规范已被弃用,此特性不再有望成为标准。请使用 PerformanceNavigationTiming 接口代替。

performance.getEntriesByType("navigation")[0]

新一代性能指标 Web Vitals

什么是WebVitals ? Web Vitals,即 Google 给的定义是一个良好网站的基本指标(Essential
metrics for a healthy site) Performance已经包含了很多指标,为什么 Google
还要再去定义一个新的指标集

这是因为,在过去要去衡量一个高质量网站,需要的指标太多,且有些指标计算很复杂,所以,Google 推出 Web Vitals
就是为了简化这个过程,用户仅仅需要关注 Web Vitals 即可。

在 Web Vitals 中,Core Web Vitals 是最核心的,它包含以下三个指标:

LCP (Largest Contentful Paint)

最大内容绘制时间,用来衡量加载体验,谷歌要求LCP最好在页面首次开始加载后的2.5秒内发生;
长久以来,对于网页开发者来说,测量网页主要内容的加载速度和内容对用户的显示速度一直是一个挑战。

诸如load(加载)或DOMContentLoaded(DOM内容加载完毕)这样的旧有指标并不是很好,因为这些指标不一定与用户在屏幕上看到的内容相对应。而像First Contentful Paint
首次内容绘制 (FCP)这类以用户为中心的较新性能指标只会捕获加载体验最开始的部分。如果某个页面显示的是一段启动画面或加载指示,那么这些时刻与用户的关联性并不大。

https://web.dev/lcp/

FID (First Input Delay)

首次输入延迟时间,用于衡量页面交互性,谷歌要求页面的FID最好小于100毫秒;

CLS (Cumulative Layout Shift)

累计布局位移,用于衡量视觉稳定性,谷歌要求页面的CLS最好保持小于0.1。

页面内容的意外移动通常是由于异步加载资源,或者动态添加 DOM
元素到页面现有内容的上方。罪魁祸首可能是未知尺寸的图像或视频、实际渲染后比后备字体更大或更小的字体,或者是动态调整自身大小的第三方广告或小组件。

react中新增的reportWebVitals.js文件

create-react-app脚手架创建的项目(版本可以通过npm list -g查看),已经新增了reportWebVitals.js文件,内容如下:

const reportWebVitals = onPerfEntry => {
  if (onPerfEntry && onPerfEntry instanceof Function) {
    import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {
      getCLS(onPerfEntry);
      getFID(onPerfEntry);
      getFCP(onPerfEntry);
      getLCP(onPerfEntry);
      getTTFB(onPerfEntry);
    });
  }
};

export default reportWebVitals;

通过把index.js文件的最后一行改为:

reportWebVitals(console.warn);

控制台会打印出来
FCP
https://create-react-app.dev/docs/running-tests/

web-vitals库最佳实践

Google 提供了的一个小而美 npm 包:web-vitals,

import {onCLS, onFID, onLCP} from 'web-vitals';

function sendToAnalytics({name, value, id}) {
  const body = JSON.stringify({name, value, id});
  // 可以的话,使用 `navigator.sendBeacon()`, 回退到 `fetch()`.
  (navigator.sendBeacon && navigator.sendBeacon('/analytics', body)) ||
      fetch('/analytics', {body, method: 'POST', keepalive: true});
}
onCLS(sendToAnalytics);
onFID(sendToAnalytics);
onLCP(sendToAnalytics);
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
度假村数字视频监控系统 设 计 方 案 目 录 一、系统概述 3 二、系统设计目标 4 三、系统设计原则、依据 5 3.1 设计原则 5 3.2 设计依据 5 四、总体设计 6 4.1 需求分析 6 4.2 设计功能描述 13 4.3 总体设计方案 12 4.4 系统结构原理图 15 、系统选型和配置说明 16 六、系统防雷设计 23 七、系统供电与控制室要求 24 一、系统概述 本方案的安全防范技术是集现代科学技术之大成的产物,它体现了现代电子技术、现代 通信技术、现代控制技术与现代计算机技术的完美结合,其特点在于它所采用的多元信 息采集、传输、监控、记录、管理以及一体化集成等一系列高新技术。实践证明,利用 这一技术构成的安全防范系统(简称安防系统),能为建设环境提供一个安全、便利、 舒适的受保护空间。闭路电视监控系统是安防系统中不可缺少的一个重要组成部分,它 不仅可以对大厦周边及内部进行全天24小时不间断实时监控,当有警情发生时社区警力 可及时、准确地进行处警;也可在事后进行某些案件回放分析,重要时也可作为呈堂证 供。因此,在大厦建立一套完善的闭路电视监控系统,不但可以改善大厦的综合安全系 数,加强安全保卫防范力度,对大厦内人身和财产安全也起到保障作用,并可为大厦实 现安全现代化管理创造极为有利的条件。 目前,在我国各行业中广泛使用的闭路监控系统大多为模拟系统,其主要特点是:采用 矩阵主机控制,通过电视墙监视前端目标,采用长延时模拟录像机进行录像和回放,具 有稳定性强、操作容易方便、价格便宜等特点;但在录像回放、检索资料时操作非常不 方便。 因此,基于数字存储技术的硬盘录像系统应运而生,经过几年的发展,至今技术已经完 全成熟,很好地解决了传统图像存储及回放等技术难题。数字硬盘录像系统不仅存储费 用低、效率高,而且还具有网络传输、远程传输和循环存储等优点。与此同时,硬盘录 像系统的数字化和传输网络化等先进技术可以实现与防盗报警等系统联网联动,及时准 确地反馈现场信息,为报警事件提供充分可靠的依据。 虽然数字硬盘录像系统解决了模拟系统的很多缺点,但数字录像系统也不是完美无缺的 ,针对某些监控点数非常多的情况(或客户需要通过电视墙来显示现场情况的),靠单 一的数字硬盘录像系统就不能很好地解决,而需数字系统和模拟系统结合来实现,因此 对不同的实际状况应区别对待,以求得最优化的系统解决方案。本设计方案建议采用模 拟和数字系统相结合的方式,用模拟系统来实现实时监看,用数字系统来实现存储和回 放等。 二、系统设计目标 在进行闭路监控系统设计的时候,依照该大厦对该系统的基本需求,本着架构合理、安 全可靠、产品主流、低成本、低维护量作为出发点,并依此提供先进、安全、可靠、高 效的系统解决方案。 架构合理: 就是要采用先进合理的技术来架构系统,使整个系统安全平稳的运行,并具备未来良好 的扩展条件。 稳定性和安全性:这是最重要的问题,只有稳定运行的系统,才能确保闭路监控系统平 稳运行。系统的技术先进性是系统高性能的保证和基础,同时可有效地减少使用人员和 系统维护人员的麻烦。良好的可扩展性则是为了用户的发展考虑。随着安防系统应用时 间的增长,未来对安防系统的要求会更高。可扩展性保证当用户有更多的要求时,引入 的新设备可以顺利地与本次配备的设备共同工作,进一步扩展与提高系统的性能。 产品主流:系统是否采用当今主流产品,关系到系统的整体质量和未来能否得到良好技 术支持以及完整的技术文档资料。 在设备选型时,我们将主要依据具体需求,同时考虑产品厂家的技术先进性,产品是否 为主流产品,原厂商的产品技术资料的完整性,原厂商的技术支持力量和产品制造公司 的发展前景。所有这些是保证用户得到良好技术支持的条件,也是保障用户投资的基本 条件。 低成本低维护量: 指力争有良好的性能价格比,所采用的产品应是简单,易操作,易维护,高可靠度的。 系统是否具有优良的性能价格比是判断一个系统优劣条件的重要依据。系统的易操作和 易维护性是保证非专业人员使用好一个系统的条件。高可靠度是保障系统运行的基本要 求,也是易维护性的保障。 我公司将本着上述设计原则,来进行此闭路监控系统的设计。并将严格按照国际惯例并 结合本公司的技术实力与工程经验,进行贵单位监控系统整个工程的安装、测试以及验 收,完工时将同时提交与工程相关的每个设备的安装使用手册、及系统的各种图表等各 项文档资料,还将根据用户的实际需求提出技术培训和有偿服务的建议。 三、系统设计原则、依据 3.1 设计原则 本设计以行业标准作为设计依据,结合大厦的具体情况,用最佳设计方案体现最高的性 能价格比,是本方案设计的指导思想,也是本方案设计的基本出发点和追求的目标。 本设计主要贯彻"高质量"及"低价格"两条主线来进行设计的。
全球软件开发大会2021上海站ppt合集(28个主题共84份) 内容如下: AIOps 智能化数据体系构建在字节跳动的实践.pdf Arm 基于性能监控单元(PMU)的性能分析实践.pdf ClickHouse 企业级应用和最佳实践.pdf DPU 的前世今生.pdf Fluid:开源云原生弹性数据集编排和加速系统.pdf G1 GC 性能优化实战.pdf Gazelle 引擎 - 本地化 Spark SQL 引擎获取性能上质的提升.pdf Go 语言生态下的大规模微服务性能优化实践.pdf Hologres 高可用设计与实践.pdf Intel 安卓云 DevOps 应用与实践-王良 黄蕊 .pdf Kotlin Multiplatform 实战记.pdf Kylin 4:A Major Step Forwards To CLOUD.pdf LightSeq 高性能序列处理与生成加速库.pdf RocketMQ5.0,生于云、长于云的新一代&消息、事件、流&融合处理平台.pdf SenseMARS 火星混合现实平台及应用开发的实现与挑战.pdf TDSQL-C PostgreSQL 在云原生架构下的新活力.pdf Toward Software Performance Evaluation at Scale A Journey .pdf Vision 可视化搭建的演进之路.pdf vivo 大规模 GPU 集群的建设实践.pdf “缓存+存储”架构下 Redis 持久化的探索与实践 & 云原生数据库的“能与不能”.pdf 下一代前端构建工具 Vite 实践与探索.pdf 与流量赛跑——机票盲盒活动背后的故事.pdf 云原生Serverless数据库的设计与实践 .pdf 云原生运行时的下一个年.pdf 云服务性能工程建设与实践.pdf 从存储到计算的极致弹性化:百度搜索中台检索系统弹性化架构演进.pdf 从零打造一个没有数据库的金融级账务系统 eBay 支付账务系统架构演进之路.pdf 企业级业务架构在能源数智化转型中的落地实践.pdf 企业级云原生应用管理.pdf 企业级分布式数据库 TDSQL 元数据管控与集群调度.pdf 创业,从 toC 走向 toB 的异与同.pdf 十年开源者的商业 CEO 转变之路.pdf 在线核心应用规模化转型 Serverless 架构实践.pdf 基于 CPU 微架构和平台特性以优化大数据软件性能实践.pdf 基于 H.266 VVC 的移动平台 8K 超高清实时解码实践.pdf 基于 Serverless 重塑前端应用研发模式-刘雄(大果).pdf 基于Prometheus的微服务监控探索与实践.pdf 基于大规模弹性伸缩实现拓扑感知的在离线并池.pdf 基于海量数据的智能问题预警分析定位排查体系.pdf 基于研发流程的数据安全建设实践.pdf 等

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值