性能优化

99 阅读2分钟

将性能从45分到90分 提升首屏的加载速度

1、路由懒加载

懒加载前提的实现:ES6的动态地加载模块——import() SPA 项目,一个路由对应一个页面,如果不做处理,项目打包后,会把所有页面打包成一个文件,当用户打开首页时,会一次性加载所有的资源,造成首页加载很慢,降低用户体验 app.js:2500kb->500kb app.css:360kb->40kb

2、组件懒加载

如果page1.js和page2.js 都引入了组件,那么两个打包后的js 都会有这个组件 使用懒加载,组件会被独立打包成 dialogInfo.js

组件懒加载的使用场景

有时资源拆分的过细也不好,可能会造成浏览器 http 请求的增多

总结出三种适合组件懒加载的场景:

1)该页面的 JS 文件体积大,导致页面打开慢,可以通过组件懒加载进行资源拆分,利用浏览器并行下载资源,提升下载速度(比如首页)

2)该组件不是一进入页面就展示,需要一定条件下才触发(比如弹框组件)

3)该组件复用性高,很多页面都有引入,利用组件懒加载抽离出该组件,一方面可以很好利用缓存,同时也可以减少页面的 JS 文件大小(比如表格组件、图形组件等)

3、骨架屏优化白屏时长

使用插件 fcp从2.8s->0.6s

4、长列表虚拟滚动(大页面场景)

使用插件 总渲染时长从1.4s-》0.3s

5、通过webworker计算大数据(大页面场景)

3万多的数据,需要计算各种差值,平均值, 从14s-》2s

FCP时间在0-1.8秒, 表示良好,颜色为绿色,FCP评分将在75~100分;

FCP时间在1.9-3.0秒, 表示需要改进,颜色为橙色,FCP评分将在50~74分;

FCP时间在3.1秒以上, 表示较差进,颜色为红色,FCP评分将在0~49分。

LCP时间在0-2.5秒, 表示良好,颜色为绿色;

LCP时间在2.6-4.0秒, 表示需要改进,颜色为橙色;

LCP时间在4.1秒以上, 表示较差进,颜色为红色。