如何提高Vue项目首页的加载速度
创始人
2025-03-18 12:21:47
0次

 为何当一个VUE项目过大时,打包之后初次访问首页加载速度会异常的缓慢,是什么原因导致以及如何解决这些问题?

[[277681]]

 

首页打开速度慢的原因

其实浏览器加载一个页面的过程就是通过http协议从服务器端下载项目所需要的资源,将html js 图片文件下载到本地解析后显示出来,如果出现网页加载速度慢,打不开无非以下几个原因:

  1. 程序自身的Bug导致页面加载异常
  2. 项目的资源太大(如果js 大的图片)导致访问浏览器从服务器获取的所需资源的时间较长
  3. 网速慢等

所以当我们的项目出现这种问题时只要F12开启浏览器的控制台看下network中请求资源的耗时即可找出问题,通过观察,现在前端的单页面应用都是是靠 js 生成,因为是spa,而且所有的渲染都在脚本上,js执行需要时间。另外加载js也要时间,所以页面越大,加载时间越长,而且js执行的时间也长,所以会出现白屏的情况。

如何解决这个问题

导致这个问题的原因就是我们项目打包后资源太大导致,所以我们可以尽量的减少优化打包后文件的大小,这样问题便迎刃而解,怎么去优化通常有以下几点:

利用路由的懒加载实现组件的按需加载,这样配置后只有当路由被访问时才会加载对应的组件,而不是在加载首页的时候就直接加载。

  1. {  
  2.  path: "/usercenter/personal", 
  3.  title: "个人信息", 
  4.  component: resolve => { 
  5.    require(["@/views/usercenter/personal.vue"], resolve); //通过requie动态加载即可 
  6.       } 
  7.    }, 

异步加载组件

 

既然是异步加载,就会存在加载失败等异常情况。这时候怎么办呢?看官网绐出的另一个特性

 

这样就可以完美的解决我们的疑问了,当异步组件加载失败后会显示错误的组件。

1. 禁用线上生成的map文件

npm run build编译之后,我们查看编译生成的文件,发现有很多.map文件,这些文件也占了不小的空间。.map文件的作用是帮助编译后的代码调试,但是我们上线的代码已经调试完成,所以上线时可以不生成.map文件。

  1. productionSourceMap:  
  2. false  //配置webpack中productionSourceMap值为false即可 

2. 启用Nginx的gzip压缩功能

在nginx.conf中的http{ }中添加如下代码即可:

  1. gzip on; 
  2. gzip_disable "msie6"; 
  3. gzip_vary on; 
  4. gzip_proxied any; 
  5. gzip_comp_level 1; 
  6. gzip_buffers 16 8k; 
  7. gzip_http_version 1.0; 
  8. gzip_min_length 256; 
  9. gzip_types text/plain text/css 
  10.     application/jsonapplication/x-javascript text/xml 
  11.     application/xmlapplication/xml+rss text/javascript 
  12.     application/vnd.ms-fontobjectapplication/x-font-ttf font/opentype   
  13.  image/svg+xml image/x-icon 
  14.  image/jpeg image/gifimage/png; 

配置好后重启服务重新访问网站在控制台中查看是否生效

 

3. 对于一些通用的工具库可以采用CDN引入,如Jquery,在index.html中从CDN引入,去掉其他页面的组件import,修改webpack.base.config.js,在externals中加入该组件即可。

4. 服务器端SSR渲染。 SSR需要在页面架构做一些对应的调整,稍微复杂,具体可参考https://segmentfault.com/a/1190000015964813。

5. 代码层面的优化,精灵图,组件化模块化,优化代码逻辑,提高代码复用性等。

相关内容

热门资讯

PHP新手之PHP入门 PHP是一种易于学习和使用的服务器端脚本语言。只需要很少的编程知识你就能使用PHP建立一个真正交互的...
网络中立的未来 网络中立性是什... 《牛津词典》中对“网络中立”的解释是“电信运营商应秉持的一种原则,即不考虑来源地提供所有内容和应用的...
各种千兆交换机的数据接口类型详... 千兆交换机有很多值得学习的地方,这里我们主要介绍各种千兆交换机的数据接口类型,作为局域网的主要连接设...
粉嫩如何诠释霸道 东芝M805... “霸道粉”是个什么玩意东芝M805拿过来的时候,笔者扑哧笑了,不是笑这款笔记本,而是笑这款产品的颜色...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
什么是大数据安全 什么是大数据... 在《为什么需要大数据安全分析》一文中,我们已经阐述了一个重要观点,即:安全要素信息呈现出大数据的特征...
全面诠释网络负载均衡 负载均衡的出现大大缓解了服务器的压力,更是有效的利用了资源,提高了效率。那么我们现在来说一下网络负载...
只需三步,让你掌握阿尔法路由器... 请参照以下阿尔法路由器设置方法,通过浏览器进入及设置宽带路由器。经过这三个步骤的设置,基本上能够熟悉...
如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...