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...

相关推荐
先吃饱再说3 小时前
React 组件通信:从 Props 单向传递到自定义事件
前端·react.js·前端框架
qetfw18 小时前
MXU:Tauri 2 + React 的 MaaFramework 跨平台 GUI 源码
前端·python·react.js·前端框架·开源项目·效率工具
hoLzwEge19 小时前
拯救低效调试!code-inspector-plugin 让代码定位如虎添翼
前端·前端框架·node.js
阿懂在掘金1 天前
企业级命令式弹窗方案:三行代码适配已有 Dialog
前端·vue.js·前端框架
阿懂在掘金1 天前
做命令式弹窗工具应该考虑什么——我为什么把 vue-layerx 设计成这样
前端·前端框架·函数式编程
LaughingZhu1 天前
Product Hunt 每日热榜 | 2026-07-23
前端·神经网络·react.js·搜索引擎·前端框架
GuWenyue2 天前
放弃云端API!一套React+WebGPU本地LLM方案,零数据上传、离线可用
前端·人工智能·前端框架
Bad_Shepherd2 天前
vue-element-plus-admin添加自定义svg图标,并且图标选择组件可选自定义图标
vue.js·elementui·前端框架
hoLzwEge3 天前
解码 IDE 智能提示:jsconfig.json 辅助开发全攻略
前端·前端框架
gis开发之家3 天前
《Vue3 从入门到大神35篇》Vue3 源码详解(五):effect 依赖收集原理——track 与 trigger 是如何工作的?
javascript·typescript·前端框架·vue3·vue3源码