# 前端监控总结
不得不说,这个东西是真的。。无聊且折磨,
# 问题来源
做的一个识别类的项目,发现以下问题
帧率不同的时候,识别的策略要换,而移动端 pc 端帧率一定不同 但具体帧率多少用什么策论,这个是不知道的,要一点一点尝试
一些过老机型,帧率过低无论什么策略都没用 但究竟帧率低到什么程度才算不合格,不知道
依赖的库在 ios 会有异常现象,但根据 ios 版本出现时间出现与否都不同 而且其关系,也不知道
识别错误,得到错误结果,但这个错误与否的判断,只能依赖人眼,无法自动报错
过程中他人引入了一些基本的 js 库,按理来说对核心识别功能无影响,但最后帧率变小了很多,原因未知
以上的问题都是逐步暴露,或许还有问题隐藏且性质未知
总结,机型,版本,系统都有影响,出现问题很难复现,甚至根本复现不了,需要前端监控
现有的前端监控,以 fps 监控为例,有些是以分钟统计的(实际如果启动识别时,帧率低卡顿可能用户几秒钟就退出去了),有些是每秒都在计算(那这样很容易发出成百上千的请求报错),可能警告界限是 30fps(但项目里面移动端 fps 到 10 都是很正常的,相当于会一直报警),也可能是完全独立(这样只能发现帧率低,但是不知道是什么导致的,没有记录行为),可能是不侵入的(现在一般都比较倾向不侵入,但在 ios 中,异常情况比较复杂,还是要用主动报警的功能)
那现在需要一个前端监控至少满足以下的部分
- 参数是动态调整的
- 允许主动调用
- 内部功能应该可以互相调用,即 fps 模块应该可以调用行为模块
- 要么提供策略,要么提供插件,不能写死,易于改动
- 要分为 性能部分,报错部分,和记录部分
- 最好在前端有一定统计的功能
# three.js 中的监控
这个我个人觉得更麻烦。。比如我可能需要其首屏渲染时间,但这不能用 firstpaint,那个求出来的不大一样,还有资源加载,如果是我写的那个,理论上要用数百个资源,模型贴图等(虽然目前来讲没出任何问题),那么第一秒就在 performance 会一下子冒出来上百条记录,不可能不处理就往后面发的,而且帧率呢也要求不一样,可以稍微低一点。其次还要考虑资源缓存命中啊这些。 基本上还是前面的需求吧,要自定义的东西多一点,自由度高
做是做出来了,但尼玛还要去写配套的东西,有点饿了