为什么VUE项目太大时,打包后第一次访问首页加载速度会异常慢,是什么原因造成的,如何解决这些问题?首页打开慢的原因其实是在浏览服务器加载一个页面的过程就是通过http协议从服务器端下载项目需要的资源,下载htmljs图片文件到本地解析和显示一下,如果网页加载速度慢,打不开的原因有以下几种:程序本身的bug导致页面加载不正常。项目的资源太大(如果js是大图),浏览器从服务端获取到需要的资源需要很长时间。打开浏览器的控制台,查看网络中的耗时请求资源,找出问题所在。通过观察,目前前端的单页应用都是js生成的,因为是spa,所有的渲染都在脚本上。js执行需要时间。另外加载js也是需要时间的,所以页面越大,加载时间越长,js执行时间也越长,所以会出现白屏。如何解决这个问题出现这个问题的原因是我们的项目打包后的资源太大了,那么我们可以将优化后的打包文件的大小最小化,这样问题就迎刃而解了。如何优化通常有以下几点:利用路由的惰性Loading实现组件的按需加载,这样配置后,只有在访问路由时才会加载相应的组件,而不是在访问首页时直接加载加载。{path:"/usercenter/personal",title:"个人信息",component:resolve=>{require(["@/views/usercenter/personal.vue"],resolve);//通过requie动态加载}},由于异步加载组件是异步加载的,所以会出现加载失败等异常。这个时候怎么办?再看官网发布的另一个功能,可以完美解决我们的疑惑。当异步组件加载失败时,会显示错误的组件。1.禁用在线生成的map文件npmrunbuild编译后,我们查看编译生成的文件,发现.map文件很多,占用空间也很大。.map文件的作用是帮助调试编译后的代码,但是我们网上的代码已经调试过了,所以上线的时候不需要生成.map文件。productionSourceMap:false//配置webpack中productionSourceMap的值为false2.开启Nginx的gzip压缩功能,在nginx.conf中的http{}中添加如下代码:gzipon;gzip_disable"msie6";gzip_varyon;gzip_proxiedany;gzip_comp_level1;gzip_buffers168k;gzip_http_version1.0;gzip_min_length256;gzip_typestext/plaintext/cssapplication/jsonapplication/x-javascripttext/xmlapplication/xmlapplication/xml+rsstext/javascriptapplication/vnd.ms-fontobjectapplication/x-font-ttffont/opentypeimage+xml/agesvg-iconimage/jpegimage/gifimage/png;配置完成后,重启服务,重新访问网站查看是否生效,在控制台Page组件导入,修改webpack.base.config.js,在externals添加组件。4.服务端SSR渲染。SSR需要在页面结构上做一些相应的调整,有点复杂。详情请参考https://segmentfault.com/a/1190000015964813。5.代码层级优化,spritemap,组件模块化,代码逻辑优化,代码提升Reusability等。
