✊不积跬步,无以至千里;不积小流,无以成江海
前情提要
将页面部署到 Netlify上(gitHubpage好像有点太慢所以没有选,因为没花钱买域名所以只能暂时用netlify做一下测试)
deploy后发现页面的下载速度如图:
![](https://file.jishuzhan.net/article/1764219753020264449/72c6d2615a12230884e7127d7c9d01eb.webp)
基本维持在4s左右这个样子,接下来就想怎么能够优化这个时间。
动态import
优化的第一步是想要尝试动态import。思路是将首页变成两部分:当前要看的部分 & 以后要看的部分。
来到router.tsx,发现home文件是先打包好,然后再放到下面去用,那么实现方法可以为:
javascript
// 1,用import()将路径变为动态
import('../pages/StatisticsPage')
// 2. 将前面加上箭头函数
() => import('../pages/StatisticsPage')
// 3. 用懒加载将函数包裹起来,并赋值
const StatisticsPage = lazy(() => import('../pages/StatisticsPage'))
// 4. 把page用suspense包起来
<Suspense> <StatisticsPage /> </Suspense>
// 5. 提供正在加载中需要显示的内容
<Suspense fallback={<Loading />}><StatisticsPage /></Suspense> }
需要注意的几个点:
- 动态引入需要默认的导出,但我们的文件都没有默认导出,所以要在最后加上默认导出
export default home
- 上面的操作能够保证对应页面只有访问到才能被加载。否则则不加载
- 由于我们首页的体积本来就很小,所以对home页面进行动态加载收益不大,对于那些页面上有很多图片的应该有很大帮助
- 动态加载就是懒加载
- 因为StatisticsPage页面比较大 所以对它下手了
打包后statastic页面大小为342KB
![](https://file.jishuzhan.net/article/1764219753020264449/03ec1446fb0852eaa63de0e4d6c82054.webp)
打包后index页面大小为139KB,压缩效率为64%
![](https://file.jishuzhan.net/article/1764219753020264449/cada391569ebaf20239fea1a204b5976.webp)
deploy后发现页面的下载速度如图:
![](https://file.jishuzhan.net/article/1764219753020264449/7ec182d04030275bd7adabdcebc96769.webp)
实现页面速度从4s到0.9s的提升
Vite Code Splitting
第二步可以用手动分块的方法来实现对页面速度的优化,思路为:某个比较大的库单独打包,不要打包到index文件里面。vite.config.ts中添加代码如下:
python
build: {
rollupOptions: {
output: {
manualChunks(id: any) {
//如果路径中包含echars 我就单独返回echarts的包
if (id.includes('echarts')) {
return 'echarts'
}
if (id.includes('node_modules')) {
return 'vendor'
}
}
}
}
},
打包结果如下:
![](https://file.jishuzhan.net/article/1764219753020264449/c16306929f0540468dba19d2dbd28bf1.webp)
index又变小了,从400多KB到了100多KB。
deploy后发现页面的下载速度如图:
平均时间缩短为0.8s左右:
![](https://file.jishuzhan.net/article/1764219753020264449/4c86b9c4faaf8ff7e02015d2a94817e2.webp)
极限最低时间可以到达0.6s左右
![](https://file.jishuzhan.net/article/1764219753020264449/d78d49b978ce81b7a6a68590dce902a7.webp)