万张图片,流畅体验 - 记一次 Vue 列表渲染的性能优化

在Web端产品中,使用Vue.js实现的列表视图在切换时遇到性能问题,表现为页面卡顿。通过分析,发现v-if指令导致大量DOM元素的创建和销毁。将v-if改为v-show进行缓存,解决了大部分问题。然而,当列表数量增加到一万时,仍有卡顿。通过设置CSS利用GPU渲染和调整层叠关系,实现了毫秒级切换。同时,注意到GPU渲染次数可能影响用户体验,提出HTTP/2协议和分批预加载的优化策略。
摘要由CSDN通过智能技术生成

背景

团队目前的Web端产品中需要显示两个列表视图:卡片列表和条目列表,并且在点击切换按钮的时候,对两个列表进行切换显示。

在开发完成进行简单性能测试时,发现列表数量达到数百条后,切换视图就会造成明显的页面卡顿,用户体验很差。于是着手进行性能优化。

第一次优化:解决已知问题

由于项目是使用 Vue.js (以下简称 "Vue")来实现,所以首先查看 Vue 是否存在性能瓶颈,如果存在则考虑替换 Vue 进行优化。

通过查看官方给出的benchmark结果,我们可以得知 Vue 的列表渲染性能在高亮和交换列表元素的时候性能较差,在创建列表和新增列表元素的时候性能都是不错的,执行时间在毫秒级别。

既然 Vue 并没有给我们制定太低的性能天花板,那么我们可以在使用 Vue 的基础上继续进行性能优化。

再来看看代码,点击切换的时候到底发生了什么。

点击事件触发后会引起组件属性 cViewType 变化,然后两个视图的列表会根据 cViewType 的值进行渲染。部分代码如下:</

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值