如何解决 SPA ( 单页应用)首屏加载速度慢

2,420 阅读2分钟

为什么加载的慢呢?

性能的优化一直是前端开发工作中需要考虑的重要问题,尤其是单页应用的首屏加载时间对用户的产品体验至关重要。

那么我们先来了解一下什么是首屏时间。

首屏时间(First Contentful Paint),指的是浏览器从响应用户输入网址地址,到首屏内容渲染完成的时间,此时整个网页不一定要全部渲染完成,但需要展示当前视窗需要的内容。

那么基于这个概念我们分析下可能导致加载慢的原因

  1. 网络延迟;
  2. 资源文件体积过大;
  3. 资源重复请求加载;
  4. 加载脚本过程中,渲染堵塞。

解决方法

  1. 减少入口文件体积:常用的手段是路由懒加载,把不同的路由对应的组件分割成不同的代码块,待路由被请求的时候单独打包路由,使入口文件变小。

  2. 静态资源本地缓存:后端返回资源问题:采用HTTP缓存,设置Cache-Control,Last-Modified,Etag等响应头。采用Service Worker离线缓存。前端合理利用localStorage。

  3. UI框架在引用时按需加载,开发过程中可能不止用到一个组件库,全局引入很不推荐!

  4. 避免组件重复打包:在webpack的config文件中,修改CommonsChunkPlugin的配置,设置minChunks为2表示会把使用3次及以上的包抽离出来,放进公共依赖文件,避免了重复加载组件

  5. 压缩图片资源,应用自身常用图标,logo等可以放在assets,其余图片可以放在静态托管目录public里面。

  6. 使用SSR(服务端渲染),即组件和页面通过服务器生成html字符串,再发送到浏览器。vue可以使用Nuxt.js实现服务端渲染。