最近客户反应在操作页面的过程中出现了卡顿甚至交互多一点浏览器直接崩溃了。项目的技术是vue + svg 所以我一直在想是不是svg交互导致的,但是svg涉及的交互也不是很多,不至于产生崩溃状态呀!后来又怀疑是代码问题,于是对大家都知道的一些内存泄露的情况进行了排查:
没有全局变量
没有定时器
没有使用未销毁的全局事件和第三方库
v-if和v-show合理使用了,v-if和v-for合理使用了
没有使用watch
...
确保代码层面是没有问题的,但是打开任务管理器,内存的确在随着点击选择交互而飙升。为了排查哪里出了问题,这里使用了 vue-devtools 选择 Performance
然后点击 Start 进行卡顿的操作后再点击 Stop ,原因一目了然:
Σ(っ °Д °;)っ 找到交互中的下拉框,原来是页面中的下拉框的数据太多了导致的页面卡顿~
解决方案
试将下拉框的数据减少,再进行同样的操作,耗时小了90倍(笑哭~~)
我的业务场景是下拉数据是通过接口一把获取的,之前没有那么多的数据,问题没有暴露,随着业务迭代数据达到几百至几千条。问题暴露了~
一般情况下,在网上可以搜到一堆对下拉数据进行远程搜索和分页处理,而本案例根据实际业务情况进行了下巧妙处理:
第一步:在data中设置