一、图片
1、懒加载,首次尽可能只加载首屏内的图片
2、减少图标数量,尽可能使用雪碧图或者矢量图标,更推荐矢量图标,不会出现压缩,也不会影响画质
3、轮播部分只加载首张,页面加载完成后重新渲染
4、小程序部分,弹窗及轮播可使用属性:uc-perf-stat-ignore:image;。可以忽略该部分加载
二、Dom
1、scu优化,减少无效渲染次数
2、计算高度,首次只渲染首屏
3、减少Dom深度
4、组件化,可以让组件有自己的state调度
5、尽可能减少重排
6、页面添加事件,可通过事件委托进行优化
7、行内定位时,尽量使用弹性布局,而不是浮动,两者渲染时间查3~4倍
8、减少CLp
三、存储
1、如无必要,尽量减少storage的使用,可以使用redux、vuex以及内存等中使用
四、网络
1、串行接口尽量合并
2、设置网络缓存
3、在页面创建时就调用
4、使用http2及以上
5、不同接口返回数据有计算关系,可以使用Promise.All()
6、静态资源使用CDN
五、系统级
1、使用预加载方式,降低加载时间
2、小程序实行分包加载
3、网页进行按需加载
4、服务端渲染
5、打包时进行压缩,降低体积
六、交互
1、CLS(Cumulative Layout Shift) 累积布局偏移 是一个以用户为中心的测量视觉稳定性的重要指标,这项指标有助于量化用户使用时发生意外偏移的情况,如何解决呢:
-
对图片和视频元素总是设定好尺寸,否则保留所需的空间。这样可以保证浏览器给这些元素分配足够的空间,在加载之后,不会产生布局偏移。如果浏览器支持,可以开启
unsized-media feature policy的策略。 -
不要把内容插入到已有元素的上方,除非为了响应用户交互。
-
如果需要用到动画,优先使用不会产生布局偏移的CSS属性。