前段时间用 uniapp 做了个h5的小商城,详情页结构相对比较复杂,包含了幻灯,评价,购买人,都在不停的切换,popup 过度的效果,还有一个差不多毫秒级别的 倒计时抢购(很多页面都有倒计时)基本结构如下图:在别的手机上还好,在我的 24K 低端机上,简直卡成了翔,,,毫秒级别的倒计时,几乎成了分钟级别的,,,

uniapp ios和安卓嵌入h5 uniapp和h5+_毫秒级

寻找问题

首先 通过浏览器的性能监控 去查找问题:按F12 > 找到 Performance, 就可以看到 页面 加载过程中 代码 执行的情况

uniapp ios和安卓嵌入h5 uniapp和h5+_css_02


性能最差的 除了 动画 就是组件和毫秒级别的倒计时了,

网站多加载 1s 可能就会失去成百上千的用户,优化势在必行,在 PC 端上都变现还算不错,Android 上的浏览器,简直了,有些东西 真的是,总归是要舍弃的,

利用 css 3 采用 cpu 加速,也不尽人意,检查组件,最严重的的问题,,,使用的 UI 框架中使用了 大量的 ifprops,进行数据交互,view 还好, inputtextarea 封装成 一个组件 那么多属性还用 在 uniapp 中简直是一场噩梦,,,最终不得不放弃部分组件

最后决定的方案
  • 切换页面时,清除掉当前页面的所有定时器(当然,这个是很常规的操作)
  • popup 不在采用动画过渡效果,直接利用 css display 属性解决 :v-show
  • 移除 复杂的组件,使用简单粗暴的组件或直接使用 dom 进行解决
  • 毫秒级别的倒计时,利用 视觉存留 调整每次刷新的时间间隔 为 100ms 肉眼基本无法分别,并且该 该代码块移除 数据监听 使用 原生的 document 进行操作(尝试过了,这个方法,确实比写在 vue 中 快很多,省去了节点变化对比的时间)
移除复杂组件和华丽的页面效果,换来了性能上的大幅提升
两权相利取其重,两权相害取其轻
结果还算满意,倒计时在我 的 24K 低端机上看着也算比较完美了,也算是解决掉了 卡成翔的 页面,项目还有待优化,奈何能想到的只有这么多,,,