| 优化点 | 解决方案 | 效果 |
|---|---|---|
1. ### 双向绑定数量过多 竞对设置单元格内部涉及双向绑定的输入组件过多,线上页面最多有88个 该和抽屉中的编辑表格一样的组件,共计**930+个(按每行最少6个来计算的)**双向绑定的组件,严重拖累页面性能。 数据计算依据:88 = 竞对信息单元格数,930 = 155(编辑表格行数)*6(每行最低的双向绑定组件数) 问题截图 :![]() |
将竞对设置的编辑表格 改为纯文本展示表格 ,全局仅维护一个编辑表格,点击对应单元格的编辑按钮后,显示抽屉,将目标单元格数据带入编辑表格进行编辑操作,编辑完成后将修改后的数据同步到目标单元格对应的数据对象中。 ![]() |
通用的编辑表格组件数量由88个 缩减到1个 ,双向绑定组件由930+ 个缩减到20个以内(线上数据每个编辑表格大概2-3行) |
2. 高并发重复请求 ![]() |
这是在子组件请求接口,没有做接口缓存,导致调用N次请求。 |
缓存后,不切换城市只请求一次。 |
3. 树型选择器渲染函数时间复杂度高 线上场景组织节点数为5377个 ,当选择父级节点时,树型选择器renderTag方法使用了**O(n2)**的查找父节点遍历方法。 该renderTag方法在初始化、点击选择框、选择值、选择框失焦等多个事件中都会触发。 问题截图: ![]() |
使用Map进行缓存,将函数时间复杂度降为O(n) javascript // 优化前:filter+some 二层嵌套循环 时间复杂度为O(n2) const allTagList = data.filter((item) => { // 如果 item 有父节点,检查父节点是否选中 if (item.parentId) { // 查找时间为O(n) return !data.some((dataItem) => dataItem.id === item.parentId); } // 如果 item 没有父节点,直接选中 return true; }); // 优化后:Map直接读数时间复杂度为O(n) const allTagList = data.filter((item) => { // 如果 item 有父节点,检查父节点是否选中 if (item.parentId) { // 使用 Map 的 has 方法,时间复杂度 O(1) return !selectedIdMap.has(item.parentId); } // 如果 item 没有父节点,直接选中 return true; }); |
|
4. 写法优化。 使用Set (n1)查找 避免模版直传方法渲染,替换为计算属性 |
![]() |
页面性能优化
weixin_490354342025-07-29 17:47
相关推荐
打工仔折腾 AI2 小时前
用 Shell 脚本自动部署 mysqld_exporter 并接入 Prometheus 远程抓取天天喝旺仔2 小时前
Linux 性能排查实战:用 perf、strace 与火焰图定位 CPU、内存与 IO 瓶颈贾伟康3 小时前
【HarmonyOS 7新能力|041】弱网直播优化工程封装:把接入逻辑放进可维护的分层结构Doris__HE16 小时前
【元脑服务器NF5476G7-NF5476M7技术规格分享】hhzz17 小时前
【OpenCV 入门到精通 10】视频分析与光流跟踪:背景减除与运动检测打工仔折腾 AI19 小时前
普通摄像头接入AI识别:绿联NAS部署Frigate监控实战爱喝水的鱼丶1 天前
SAP-ABAP:SAP 权限控制深度解析:自定义程序与标准事务码的边界与协同天天喝旺仔1 天前
MySQL索引优化实战:B+Tree原理、索引失效与覆盖索引调优hanchenxing1 天前
向量数据库备份恢复实战:从快照到时间点回滚的优化方案向量数据库打工仔折腾 AI1 天前
Pascal Editor 本地部署实战:Bun 启动 WebGPU 3D 编辑器并解决公网访问报错


这是在子组件请求接口,没有做接口缓存,导致调用N次请求。
避免模版直传方法渲染,替换为计算属性
