您现在的位置是:亿华云 > 系统运维
VUE项目性能优化实践——通过懒加载提升页面响应速度
亿华云2025-10-09 03:48:34【系统运维】2人已围观
简介最近我司因业务需求,需要在一个内部数据分析平台集成在线Excel功能,既然我们自己就是做开发工具的,所以目光自然就落在了我司自研的前端表格产品上。项目的目的是要通过数据透视表和Excel公式来分析公司
最近我司因业务需求,项响需要在一个内部数据分析平台集成在线Excel功能,目性既然我们自己就是化实做开发工具的,所以目光自然就落在了我司自研的践通加载前端表格产品上。
项目的过懒目的是要通过数据透视表和Excel公式来分析公司的各项运营数据。不过在集成后,提升在开发环境页面运行流畅,页面大量数据加载处理也很快。速度但是项响发布生产后,在用户每次打开页面时,目性加载时间上相较开发阶段均有所降低,化实经过排查速度变慢是践通加载由于发布包的vendor.js变大所导致的,这个文件加载每次都需300毫秒左右,过懒由于小的提升Vue项目并没有做模块划分,所以所有的页面代码都直接打包到了vendor中,在集成了新功能后,发布包也随之变大了。
既然找到了原因,我们就开始着手优化,在前端对于需加载较大资源时,我们一般都采用懒加载的亿华云计算方式来优化效率。
什么是懒加载?
懒加载也叫做延时加载,在网页响应时不立刻请求资源,待页面加载完毕或者按需响应时再加载资源,以达到提高页面响应速度以及节省服务器资源的谜底。网页中常用的懒加载是图片的懒加载,对于类似淘宝一样的多图页面,如果等待所有图片都下载完成再响应用不必然造成页面加载的卡顿。对于JS资源的加载也是同样的道理,大JS的加载会造成JS阻塞,页面出现停止响应的假死状态。因此可以通过按需加载的方式,提高页面首屏的加载速度。
总结了具体优化步骤,下面我们就开始着手优化吧!
开始优化
首先是项目环境:Vue 2.6
开发环境:Vue-cli 4.5 + TypeScript 3.9
划分业务模块通过路由异步加载模块,加速首屏以及其他页面加载速度,在Vue Router中将webExcel模块配置为懒加载模式,源码下载配置后webExcel组件会按照指定的webpackChunkName打包为单独的文件,并在访问webExcel路由的时候才会加载。这样访问home以及about页面时并不会加载webExcel资源。
打包发布访问页面,首屏秒开,直接访问about依旧秒开。可是查看网络请求时候发现访问首页时请求了about和web Excel的资源。经过排查发现vue-cli在页面中使用了preload和prefetch预加载机制,在不影响当前页面加载的情况下预加载后续页面需要的资源提升用户体验,这里为了演示清晰注释掉prefetch的资源。
(临时禁用prefetch预加载)
开启路由懒加载后首页并未加载about和webExcel。
(首页Home网络请求)
清理网络请求记录,点击Web Excel,访问webExcel页面,此时会请求webExcel资源并展示组件。
(webExcel页面网络请求)
在线Excel组件懒加载,进一步优化使用插件页面打开速度优化了路由加载,为了提升用户体验,进一步优化webExcel页面,开启组件懒加载,当需要Designer组件的时候再加载。
开启异步组件的方式类似于路由,直接配置import组件即可,免费信息发布网替换原有的静态import。
(组件懒加载)
这里我们一步到位使用AsyncComponent配置,这样在加载组件(loading)时候可以给用户一个提示。
(页面模板)
(异步组件懒加载)
页面上通过displayDesigner属性控制Designer组件是否显示,setTimeout 3秒后开始加载Designer组件并展示。LoadingComponent在加载时展示loading状态。
可以从网络请求中看到,webExcel加载完3秒后开始请求designer资源,请求时显示LoadingComponent,请求完毕展示Desinger 组件。
开启gzip压缩,加速资源请求速度为了进一步加速资源请求,可以开启服务器gizp压缩,目前大部分浏览器都支持gzip,可以开启服务器的gzip功能,服务器在传输资源之前先进行压缩。
网络请求Request中会出现如下内容,就表示支持gzip
Accept-Encoding: gzip, deflate, br
Vue-cli可以在打包时就将资源提前进行gzip打包,这样服务器直接返回打包后的资源不需要再次打包了。通过使用compression-webpack-plugin插件可以在打包时直接生成gz压缩文件。关于gzip的配置可以根据具体部署情况设置。
总结
经过以上优化,首屏加载资源仅需Vue基础组件和Home页面组件,首屏加载速度回复到原始200毫秒。其他未使用Designer组件的页面也无需加载资源,同时Designer组件加载一次,后续其他页面再使用组件也无需再次加载
以上就是关于Vue路由和组件懒加载的一些配置,不过懒加载不是万能的,还是要从实际需求出发决定是否使用。
很赞哦!(6)
上一篇: 四、一定要仔细阅读细节
下一篇: 4、注册门槛低
相关文章
- a、变更前的公司证件扫描件(代码证或者营业执照)及联系人身份证复印件、变更后的公司证件扫描件(代码证或者营业执照)及新的联系人身份证复印件;身份证复印件需本人签名,公司证件复印件需加盖公章。
- 大分区表高并发性能提升100倍?阿里云 RDS PostgreSQL 12 新特性解读
- 层层推进!Kubernetes 网络原理图解,我用这招!
- Node.js 17 达到 EOL:这意味着什么?
- 公司在注册域名时还需要确保邮箱的安全性。如果邮箱不安全,它只会受到攻击。攻击者可以直接在邮箱中重置密码并攻击用户。因此,有必要注意邮箱的安全性。
- 域名该怎么玩?
- KZ域名好不好?KZ域名介绍
- 后端开发必备的MySQL日志文件知识点
- Status、Creation Date、Expiration Date
- Spring Boot 使用 Disruptor 做内部高性能消息队列
站长推荐
ICANN 规章禁止转移已经被记录或者在60天前内转移的域名。
HDC技术分论坛:ArkCompiler原理解析
8.5K Star! 检查 Python 代码内存分配的利器
屌炸了!太神奇的SQL查询经历,group by慢查询优化
在数以亿计的网站中,我们应该抓住每一个可能带来宣传的机会,域名可以带有企业的名字,一般可以使用汉语拼音或者英语单词或者是相关缩写的形式,只要用户记住了你企业的名字,就能很容易的打出你的网站域名,同样的,记住了网站域名也能很快的记住你公司的名字。
Python 有 ,= 操作符?
域名停放会出现在哪些域名中?域名停放的注意事项
进入 SpringBoot2.7,有一个重要的类过期了