VUE2打包体积优化以及利用TimeLine进行优化点分析

背景:由于业务发展,代码打包体积逐渐增大,打包后文件增大到24M左右,页面loading时间达到了恐怖的3.5s,极端情况下甚至达到了15s左右

结果:优化后打包体积降低为2.5M左右,首屏加载时间稳定在1s左右

首先,我们要解决的是不可容忍的15s以上的loading时间(根据以往经验,国内用户无法加载国外资源导致)

方法:去掉或者根据环境判断(一般是谷歌统计或者谷歌地图资源加载会导致这样的问题)

第二步,由于项目刚开始比较赶工期,直接拉过来的框架并未对element和echarts按需加载

根据element和echarts官网上的教程,进行了按需加载(element由于调用的组件太多,并未节省太多资源),按需加载后大概节省了2M左右的资源

第三步,针对package.json的下载项挨个排查

mathjs

由于项目中用到了地图围栏功能,有较多对小数点运算功能,但这个包体积实在过大,为了性能自己写utils实现(小数点精度记得保持)

建议是node_modules下载项内容简单的尽量手写

第四步,此时项目打包体积缩减到17M左右,添加gz压缩减小打包后体积

该方法只能减少打包后文件体积,但是实际页面加载时的总资源量不变

此时合理利用chunk分包策略,建议只对500K以上的资源进行分包,具体原因在timeLine中详解

控制台中netWork的TimeLine

如上图所示,打开network,箭头出即是每个请求的timeline缩略图,在这里可以看到请求资源加载的大致情况

如上图所示,点击某个请求,可详细查看该请求的时间分布,我们根据单个请求详细解释资源加载耗时以及如何优化

1.正在排队(英文为Queuing),该项关系到chunk分包策略

导致该请求不能被立即执行的原因:

首先,页面中的资源是有优先级的。比如 CSS、HTML、JavaScrpt 等都是页面中的核心文件,所以优先级最高;而图片、视频、音频这类资就不是核心资源,优先级就比较低,通常当后者遇到前者时,就需要"让路",进入待排队状态。

其次,浏览器会为每个域名最多维护 6 个TCP 连接,如果发起一个 HTTP 请求时,这6 TCP 连接都处于忙碌状态,那么这个请求就会处于排队状态,0最后,网络进程在为数据分配磁盘空间时,新的 HTTP 请求也需要短暂地等待磁盘分配结束

解决方法:域名分片技术(资源多域名加载)、站点升级

2.停滞(英文为Stalled)

该阶段为TCP连接的检测过程,如果检测成功就会继续使用该TCP发送数据,检测失败则会重建连接,所以该阶段耗时较长,往往是丢包导致,这也意味着网络或者服务端有问题

3.服务器建立连接以及ssl握手时间

该阶段在最新chrome中部分不展示,本次整个连接市场1.44ms,因此不考虑是该部分问题

4.已发送请求(英文为Request Send)

该阶段发送浏览器缓冲区数据,无需判断服务器是否收到,此处一般不用分析

5 正在等待服务器响应(waiting)

该指标可以反映出服务器响应速度,时间越短,服务器响应越快

过慢时可从以下原因分析

markdown 复制代码
    *   服务器生成页面数据时间过久
    *   网络原因
    *   发送请求头时带上了多余的用户信息

解决方案

markdown 复制代码
    *   服务器增加缓存
    *   首先排查网络环境,网络环境无问题则使用cdn缓存更多的静态文件
    *   减少信息携带
6.下载内容(Content DownLoad)

该项是下载资源时长,单个资源下载时间过长,前端自己看看资源大小反省一下,(压缩文件、去注释、拆包)

引用:浏览器原理 20 # Chrome开发者工具:利用网络面板做性能分析blog.51cto.com/kaimo313/55...

相关推荐
WayneYang11 小时前
Nuxt 3 + Vue 3 + TypeScript 全栈开发知识点汇总(2026 最新版)
前端框架·全栈
weixin79893765432...13 小时前
React 系统的梳理
react.js·前端框架
QD_ANJING16 小时前
建议5月的Web前端开发都去飞书上准备面试...
前端·人工智能·面试·职场和发展·前端框架·状态模式·ai编程
kyriewen111 天前
你等的Babel编译,够喝三杯咖啡了——用Rust重写的SWC,只需眨个眼
开发语言·前端·javascript·后端·性能优化·rust·前端框架
OCN_Yang1 天前
能告诉我:你为什么用 MVI 吗?反正我不理解!
android·架构·前端框架
小宋的踩坑日记2 天前
全网最全!Tailwind/Unocss 类名速查表,前端开发必备神器!
css·小程序·前端框架
天若有情6733 天前
自己开发一款极简 Vanilla 原生前端框架,已开源上架 NPM & GitHub
前端框架·npm·github
空中海3 天前
05 React架构设计、项目实践与专家清单
前端·react.js·前端框架
萑澈3 天前
Ripple新前端框架的发展与AI原生全栈开发前景:架构重塑与生产力范式转移研究报告
架构·前端框架·ai-native
killerbasd4 天前
还是迷茫 5.3
前端·react.js·前端框架