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

相关推荐
天天进步201510 小时前
从零到一:现代化充电桩App的React前端参考
前端·react.js·前端框架
知识分享小能手12 小时前
React学习教程,从入门到精通, React教程:构建你的第一个 React 应用(1)
前端·javascript·vue.js·学习·react.js·ajax·前端框架
每一天,每一步14 小时前
React页面使用ant design Spin加载遮罩指示符自定义成进度条的形式
前端·react.js·前端框架
传奇开心果编程17 小时前
【传奇开心果系列】Flet框架实现的图形化界面的PDF转word转换器办公小工具自定义模板
前端·python·学习·ui·前端框架·pdf·word
程序员张319 小时前
Vue3+ElementPlus—高效存储和回显多选项的状态值
javascript·vue.js·前端框架
Thomas游戏开发20 小时前
Unity Android性能优化设置指南
前端框架·unity3d·游戏开发
li理2 天前
鸿蒙应用开发深度解析:从基础列表到瀑布流,全面掌握界面布局艺术
前端·前端框架·harmonyos
EndingCoder2 天前
React 19 与 Next.js:利用最新 React 功能
前端·javascript·后端·react.js·前端框架·全栈·next.js
页面仔Dony4 天前
Vue2 与 Vue3 深度对比
vue.js·前端框架
ZsTs1194 天前
还在死记 Vue 2 和 Vue 3 的区别?12个核心模块对比,让你彻底告别面试难题!
vue.js·面试·前端框架