Releases: ucxn/ZTE-Stat_Max
定时器解耦 程式模块化 提升统计评估精准性
从今开始,本程序已经几乎开发完毕,功能性增强和 UI 优化也都已经采用了现代的写法
如今,欢迎使用各品牌路由器的网友提供自己的抓包数据,最好是能够看到 WAN 口和接入具体设备的流量
哥哥科技将尽自己所能做适配
必须是电脑浏览器抓包,手机浏览器会抓包者也可,并不需要大包,我们要的是 HTTP ,不是整个网络层
期待各位给出更好的功能性优化建议,争取升到 6.0!
1.通过新的 API,使得微积分统计大幅度提升,并且支持双账本记账
2.支持双 WAN,支持统计物理 LAN 口 ,全部支持用户客制化
3.消灭废物变量,坚持内联运算
4.CSS 优化支持手机端,以及无级拖动调节
5.修复对 Apple Safari 和 Android 的 Via 的兼容性,彻底支持User script.
6.解耦事件 “All in 2”架构.
7.特别感谢 @10000reality-png ,对本项目和计划启动的支持。 @ucxn
8.修复和 Via 的兼容性
UI升级、∫积分算法优化、体验提升(冻结窗格)等
『更新日志』
-
引入「看板冻结」功能
在全局看板的左上角新增了一个
📌图钉按钮。点击后,看板会利用position: sticky吸附于视口顶部。现在,即使在超长设备列表中,也能随时参照全局统计数据,无需再往返滚动。
该功能采用纯 DOM 状态切换,0 废变量开销。
-
“0 漏水估算”机制透明化(Nerd 面板)
为解决设备休眠/网络瞬断后的积分漂移,脚本内置了一套补偿估算机制。为消除算法“黑盒”,现将这部分估算出的流量与触发次数,在看板右上角实时透传。这部分数据为Geek专属,便于在极限网络环境下对积分的准确性进行审计与追溯。让微积分引擎的运行轨迹完全可见。 -
渲染层引入 O(1) 级 DOM 节点微缓存
在renderUI的高频循环中,为每个设备节点开辟了私有的_gege储物柜。首帧渲染后,所有相关的子节点(如进度条、文本框)都会被缓存,后续刷新直接通过对象属性读取,消灭了大量的querySelector性能开销。 -
压榨 V8 引擎底层的数学与类型转换性能
- 将底层大循环中的高频除法全部替换为浮点乘法(例如把
/ 2000改为* 0.0005)。 - 将部分字符串转数字的操作,从
parseFloat替换为一元正号+的隐式类型转换,进一步节省 CPU 指令周期。
-
消除闭包导致的内存GC尖刺
将四段式“内外网比”的核心决策逻辑(calcStageRatio)从渲染循环内部提升至全局作用域,转为静态纯函数。避免了每次触发重绘时,JS 引擎都要在内存中重新分配和销毁该函数的开销。 -
视觉排版与单位细节微调
- 设备的渲染分类顺序重新编排为:有线设备 -> 5.2GHz -> 5.8GHz -> 2.4GHz。
- 修复了双轨制流量在突破 10GiB 阈值时可能导致的 flex 容器宽度抖动。
计算内外网比,提升兼容路由器范围
ZTE-STAT_MAX 更新 5.9.9.ge(哥)版本,感谢 @labrechonie-hue
配套的 HA 版本将更新 1.0.8,感谢 @10000reality-png
1.支持计算内外网比例
内外网比例,在双方达成共识时,取 LAN 口积分和和高精流量统计总和的平均值。当有分歧时,取离 wan 口较近的值。具体经验数值为 0.75 至 1.4、0.84 至 1.7、Delta 小于 0.6。
刷新频率被定为每逢 32 个周期刷新一次,而非使用时间定时器,采用优雅的模%31 算法。
2.视觉 UI 优化
将当前的统计口径和总计分开,当前系列为本次,总计系列为长期,分别采用橙绿和红蓝,更加直观。
3.重大 bug 已修复:
中兴星云普通千兆版 Poe 在新版固件以后无法启动智能 Mesh 适配模式,目前该问题已解决。感谢 behinder85 提供电脑远程测试。
4.支持修改样式排布模式
目前已经支持简洁型、紧凑型和宽松型三种
UI 方面对调积分值和本次接入值的位置
流量增加对 TiB 的自动换算支持
WAN 口改为左边显示 MiB,右边显示 Mbps
和下方的 LAN 口以及局域网各设备保持一致
5.使用发包并且 fetch XHR 的时候,采取更有健壮性(鲁棒性)的方法兼容更多路由器。
6.前端 Webhook 对接 HA 脚本时,发送 10 位 Unix 时间戳,和集成 py 完全兼容。
7.统计当前和总计时,在循环中判断设备类型,将复杂度降低到 O(1)。
8.使用更加现代化的 JS ES6+ 语法,将 for in 改为 for const,提升性能。虚拟 DOM 们采用 Array push 和 join。
9.rAF动画实现读写分离,减少抖动情况。使用逻辑空数值代替 if 判断。
10.优化上行比例计算方式,改为长期统计记账模式 下行依然为鲜活的本次接入。
11.减少废物变量,能预计算好的,绝不计算两次,只使用一次的内联运算绝不使用变量。
12.删除并不需要的过度防御卫语句。
性能优化,支持同步到 HA
5.9.9G新增:
🏠 联动 Home Assistant:搭配专属的 哥哥科技 中枢集成,支持通过 Webhook 将状态实时推送到 HACS 插件。避免Web只能单端接入,实现多端并发观测。详见兄弟项目:ZTE-Stat_HA
5.9.9D版本最新增加的功能:
1.对正则表达式进行预编译,减少上下文开销,提取到全局外层作用域,作为常量预编译,提升长期挂机的执行性能。
2.将字典创建改为无原型链,减轻不必要的分支开销
3.避免全局重排
4.使用requestAnimationFrame做法,使得和显示器的同步更加优雅
5.修复DOM界面的初次启动闪烁、空白,提升OOBE体验
6.优化字符串显示
7.使用JavaScript的ES2020可选链操作符语法,更改为三元表达式。
8.曾经为了避免在休眠后网速积分导致流量暴增,设置为0网速时段,排除该段时间作为区间值
新版允许手动设置轮询间隔,目前,当网速从有→有以及有➡️0均能正确判断,而从0到有的具体持续时长则选择估算。
5.9.9B版本优化:
修复:高精流量统计双重计算
优化:微积分数学算法
优化:DOM遍历性能
修复:增强include健壮性
增加:类似“垂直同步”
Home Assistant 集成
HA-1.0.0 Add files via upload
Home Assistant 接入(测试)
HA-0.9 Add files via upload
性能优化
5.9.9D版本最新增加的功能:
1.对正则表达式进行预编译,使得字面量正则被缓存,在循环频繁调用中减少上下文开销,将其提取到全局外层作用域,作为常量预编译,提升长期挂机的执行性能。
2.将字典创建改为无原型链,减轻不必要的分支开销
3.避免全局重排
4.使用requestAnimationFrame做法,使得和显示器的同步更加优雅
5.修复DOM界面的初次启动闪烁、空白,提升OOBE体验
6.优化字符串显示
7.使用JavaScript的ES2020可选链操作符语法,更改为三元表达式。
8.曾经为了避免在休眠后网速积分导致流量暴增,设置为0网速时段,排除该段时间作为区间值
新版允许手动设置轮询间隔,目前,当网速从有→有以及有➡️0均能正确判断,而从0到有的具体持续时长则选择估算。