首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >单页应用首屏问题

单页应用首屏问题

作者头像
wade
发布2020-06-11 16:00:25
1.5K0
发布2020-06-11 16:00:25
举报

刚开始用vue的时候就听有人一直说打包出来的包太大了,导致首次加载特别慢,之后采用了路由懒加载,把每个页面都单独打包,首次加载从来没有觉得慢过。或许是自己做的项目太少不够大,所以没有考虑过这件事。

为什么单页应用首次打开会比较慢,我的理解是全局注入的东西如果比较多,那么第一次加载确实会比较慢。因为我们经常在mainjs里面引入很多插件和UI库,虽然路由懒加载了,首次加载只是加载某一个页面,但是引入的插件和UI库第一次还是要加载的,这就导致首次加载很慢。

我去查了很多文章,自己整理了逻辑上是正确的几个优化方法,只是自己觉得ok,如果不对或者有更好的优化方法欢迎指教:

1、CDN引入,现在经常使用的那些插件库UI库应该百分九十以上都提供了免费的CDN库,当然,如果公司允许,下载下来放到自己的CDN里面当然是最稳妥的。采用CDN引入,再webpack配置一下不打包这些CDN引入的库,很大情况下打包出来的体积肉眼可见的减少了。有人会说,CDN引入了请求变多了,前端优化有一条街就是减少http请求。但是通过CDN引入的请求和请求你那么大一个文件,速度还是CDN多加载几个更快。

2、按需引入,这个应该是所有都知道的,我这边测试了一下一些小的js影响也就几KB,UI库影响就很大了。我全局引入elementUI,打包出来之后首次加载的chunk-vendors.js和去掉之后的chunk-vendors.js大小将近2M。

3、服务端渲染(ssr),以前一直以为服务端渲染只是为了seo,后来才知道解决首屏问题,这才是最大的优化。其实也很好理解,一般浏览器渲染是请求回来之后再通过js渲染页面,而服务端渲染是请求回来直接就是页面。这边顺便说一下为什么有利于seo,单页应用的项目,你右键查看源代码,dom结构只有一个id是root的div,浏览器刚打开扫描dom的时候只有这个div,后面通过js注入了,但是扫描已经结束了,所以不利于seo,而服务器渲染或者以前的多页项目,右键查看源代码,dom都是直接就有的。服务端渲染的缺点应该就是对服务器要求要高一些,因为占用服务器内存比较大一些。还有说是浏览器api无法使用,这个没有具体开发过项目,按道理讲应该有解决的办法。

4、开启gzip压缩,这个我不太确定服务器那边怎么做,压缩之后可以减少体积和网络传输的流量大小,这也很好理解,再大的文件,压缩一下,减少的可不是一丁半点。还有,前端代码也可以进行压缩。

5、优先加载,或者说按模块加载,这一个方法看情况把,像淘宝那些有必要,本人是不建议去做,因为没有必要。简单来说就是一进入页面就把马上看到的先加载,其他的通过滚动也好通过监听也好,进行懒加载。

6、缓存,这个其实也算是很好的一个方法,无非就是强缓存和协商缓存,就是服务器那边配置的。然后做一些loading动画,优化体验感。

应该还是自己做的项目都不够大,所以对这个首页优化还是没有太大的感触,会分享这个也是因为一个总监级别的面试问我的问题,现在想想,当时他说的项目随便都是几百个页面,体积很大,有个什么关系呢,路由懒加载了,首次加载只会加载一个页面,只是首次会加载全局引入的那些库,所以比较慢。

另外,我对ssr也是感触不大,想想,还是觉得为了seo可以去选择,或者真的要那种对首屏优化要到毫秒级的才需要。就我本人来说,打开页面两三秒能开我都是可以接受的,还是只能怪自己对这方面实在是没有太大的追求。不过,ssr是接下来要学习的一个点,说不定什么时候就要使用了。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-06-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 coding个人笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
内容分发网络 CDN
内容分发网络(Content Delivery Network,CDN)通过将站点内容发布至遍布全球的海量加速节点,使其用户可就近获取所需内容,避免因网络拥堵、跨运营商、跨地域、跨境等因素带来的网络不稳定、访问延迟高等问题,有效提升下载速度、降低响应时间,提供流畅的用户体验。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档