最近线上环境发现一个问题,在进入页面后3s后页面即卡顿崩溃,刷新页面无效,内存剧增,经排查,是由于某一个选择框的数据由于接口一次性返回数据过多,导致浏览器处理不了,随即出现这个问题。
有几种解决方案:
1、接口增加分页,选择框滚动到底部加载下一页。
优点:数据过多万能解决方案。
缺点:前端需做处理,且本人在实现当中发现跟以前element不太不一样,特作此文章日志
2、前端分次查询,多次调用接口。
优点:简单便携
缺点:多次调用接口,且数据量不可控,一次加载的数据长度不好把控,增加服务器压力
3、后端优化接口一次性返回大数据时耗时问题,前端采用虚拟列表的方式展示。
优点:在处理数据量大且页面不能卡顿的需求下,这个方案是好的
缺点:前后端都需要作处理,比较麻烦且给双方都增加不小的工作量(影响摸鱼时间)
当前则采用第一种方案,并写成自定义指令其他需要的地方复用
这里有个问题需要注意一下
由于ElementPlus增加了一个teleported属性且默认为true,使下拉菜单默认插入到body元素下,所也就是el-select下默认不包含.el-select-dropdown了,所以可以添加一个popper-c