美文网首页
Vue首屏加载慢的优化方案

Vue首屏加载慢的优化方案

作者: 雷神的铁粉 | 来源:发表于2018-11-02 18:54 被阅读0次

使用vue构建项目首屏加载时,出现加载慢,白屏的问题解决方案:

步骤一 webpack来打包vue项目,vendor.js过大问题解决

  • 1.造成过大的原因是因为在main.js导入第三库太多时,webpack合并js时生成了vendor.js(我们习惯把第三方库放在vendor里面)造成的.如下图在main.js引用了一些第三方库。导致了你的服务器端的js文件越大则用户加载页面的时间会越长(因为所需下载js的时间越久)
    首先在index.html中,使用CDN的资源,复制以下bootstrap的链接资源:
<body>
    <script src="https://cdn.bootcss.com/vue/2.5.2/vue.min.js"></script>
    <script src="https://cdn.bootcss.com/vue-router/3.0.1/vue-router.min.js"></script>
    <script src="https://cdn.bootcss.com/vuex/3.0.1/vuex.min.js"></script>
    <script src="https://unpkg.com/vue-awesome-swiper@2.6.7/dist/vue-awesome-swiper.js"></script>
</body>
  • 2.在bulid/webpack.base.conf.js文件中,添加externals,导入index.html下所需的资源模块:
module.exports = {
  context: path.resolve(__dirname, '../'),
  entry: {
    app: ['babel-polyfill', 'lib-flexible', './src/main.js']
  },
  externals: { // <-添加
    vue: 'Vue',
    vuex: 'Vuex',
    'vue-router': 'VueRouter',
    VueAwesomeSwiper: 'VueAwesomeSwiper'
  },
  • 3.在main.js里将以下 import 注释 替换 require 引入模块
// import Vue from 'vue'
// import VueAwesomeSwiper from 'vue-awesome-swiper'

const Vue = require('vue')
const VueAwesomeSwiper = require('VueAwesomeSwiper')

Vue.use(VueAwesomeSwiper)
  • 4.当然可以在生产环境当中删除掉不必要的console.log
    打开build/webpack.prod.conf.js 在plugins里添加以下代码
  plugins: [
    new webpack.optimize.UglifyJsPlugin({ //添加-删除console.log
      compress: {
        warnings: false,
        drop_debugger: true,
        drop_console: true
      },
      sourceMap: true
    }),
  • 5.执行npm run build
    在控制台当中可以看到文件压缩的记录
    static/js/vendor.50304a716a06fb947df7.js 的size
    我这里一开始有450k 当优化完以后整整小了一半多 222kB(当你用了一些ui组件库替换成cdn说不定更大的惊喜)


    sizexiao.png
  • 6.最后可以通过打开项目测试在首屏加载时有着明显的打开提速效果!

步骤二 vue-cli开启打包压缩 和后台配合 gzip访问

  • 1.首先打开 config/index.js ,找到 build 对象中的 productionGzip ,改成 true
    1. 打开 productionGzip: true 之前,先要安装依赖 compression-webpack-plugin ,官方推荐的命令是:
npm install --save-dev compression-webpack-plugin 
//(此处有坑) 如果打包报错,应该是版本问题 ,先卸载之前安装的此插件 ,然后安装低版本 
 npm install --save-dev compression-webpack-plugin@1.1.11
  • 3.等安装好了,重新打包 npm run build ,此时打包的文件会 新增 .gz 文件。是不是比原来的js文件小很多呢,之后项目访问的文件就是这个.gz文件
  • 4.后台nginx开启gzip模式访问,浏览器访问项目,自动会找到 .gz 的文件。加载速度明显提高。

开启 nginx gzip ,在 nginx.conf 配置文件中 配置

http {  //在 http中配置如下代码,
   gzip on;
   gzip_disable "msie6"; 
   gzip_vary on; 
   gzip_proxied any;
   gzip_comp_level 8; #压缩级别
   gzip_buffers 16 8k;
   #gzip_http_version 1.1;
   gzip_min_length 100; #不压缩临界值
   gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
 }

保存退出 ,并 重启 nginx

systemctl reload nginx.service  
systemctl restart nginx.service
  • 5 测试访问
curl -I -H "Accept-Encoding: gzip, deflate" "http://xxx.com"  //访问请求中 Content-Encoding: gzip 表示 压缩成功页面,

同理 访问js,css等 可测试 是否压缩成功.

  • 6 最后访问项目,进入首页的时候加载速度会有所提升

相关文章

  • vue打包优化

    vue打包优化 首屏加载慢也是网络慢资源也比较大如下图,加载完需要15s......崩了...image 配置到了...

  • 常见面试题--js+css+vue

    1、变量提升、函数提升 2、数组的常用方法 3.优化首屏加载速度 4.Vue 首屏加载速度优化 5、Vue如何设置...

  • Vue首屏加载慢的优化方案

    使用vue构建项目首屏加载时,出现加载慢,白屏的问题解决方案: 步骤一 webpack来打包vue项目,vendo...

  • 构建工具

    Vue 首屏加载优化 关于 Vue 首屏加载优化的一点总结为什么我们要做三份 Webpack 配置文件 在知乎上我...

  • Vue SPA 首屏加载优化实践

    写在前面 本文记录笔者在Vue SPA项目首屏加载优化过程中遇到的一些坑及优化方案! 我们以 vue-cli 工具...

  • vue项目优化方案

    使用严格模式,指定代码书写规范 首屏加载优化 开启gzip压缩代码,此方案同样是解决首屏加载过慢的方案之一 UI库...

  • ssr个人初探

    ssr的好处主要以下两点 (1)优化首屏加载,使用vue-ssr可以把数据渲染成HTML, 并在首屏展示, 用户体...

  • 搜索结果页优化

    业务场景 优化方案 1. 首屏服务端渲染 方案一:node+ejs 方案二:node+vue+vuex 适用的场景...

  • vue首屏加载优化

    1.异步路由加载 2.不打包库文件 spa首屏加载慢,主要是打包后的js文件过大,阻塞加载所致。那么如何减小js的...

  • VUE首屏加载优化

    (1)组件按需加载;对Element-UI, Mint-UI组件进行按需加载;(2)路由组建懒加载;异步加载con...

网友评论

      本文标题:Vue首屏加载慢的优化方案

      本文链接:https://www.haomeiwen.com/subject/hggcxqtx.html