另外一个博客站点

VUE部署打包优化

1、路由组件使用懒加载 加载:

未启用懒加载:
import Vue from 'vue'
import Router from 'vue-router'
import HelloWorld from '@/components/HelloWorld'

Vue.use(Router)

  export default new Router({
         routes: [
                    {
                      path: '/',
                      name: 'HelloWorld',
                      component:HelloWorld
                    }
                  ]
                })

第一种: 使用vue异步组件

import Vue from 'vue'
import Router from 'vue-router'

Vue.use(Router)
export default new Router({
  routes: [
    {
      path: '/',
      name: 'HelloWorld',
   //去除 import HelloWorld from '@/components/HelloWorld' 引入步骤 直接 使用resolve异步组件
      component: resolve=>(require(["@/components/HelloWorld"],resolve))
    }
  ]
})

第二种:

import Vue from 'vue'
import Router from 'vue-router'
/* 使用es 引入import*/
const HelloWorld = ()=> import('@/components/HelloWorld')

Vue.use(Router)

  export default new Router({
         routes: [
                    {
                      path: '/',
                      name: 'HelloWorld',
                      component:HelloWorld
                    }
                  ]
                })

在 页面 需要使用通用组件 也可以 使用懒加载,自定义api.js等 需要考虑到加载优先级

2、关闭 vue-cli3预加载

找到 项目 -> config -> index.js -> module.exports :
在这里插入图片描述

    // 关闭 vue-cli3预加载
    chainWebpack: config => {
      // 移除 prefetch 插件
      config.plugins.delete('prefetch')
  
      // 或者
      // 修改它的选项:
      config.plugin('prefetch').tap(options => {
        options[0].fileBlacklist = options[0].fileBlacklist || []
        options[0].fileBlacklist.push(/myasyncRoute(.)+?\.js$/)
        return options
      })
    },

3、去除.map 线上调试代码

同样是 找到 项目 -> config -> index.js -> module.exports :
在这里插入图片描述

productionSourceMap: false

4、开启gzip压缩

第一步: 安装 依赖: 使用compression-webpack-plugin低版本 避免 冲突

npm install --save-dev compression-webpack-plugin@1.1.12

第二步: 找到 项目 -> config -> index.js -> module.exports : 开启 gzip
在这里插入图片描述

productionGzip: true

第三步: 找到 项目 -> build-> webpack.prod.conf.js -> 找到 最底下: 找到 asset 修改为 filename
在这里插入图片描述

if (config.build.productionGzip) {
  const CompressionWebpackPlugin = require('compression-webpack-plugin')

  webpackConfig.plugins.push(
    new CompressionWebpackPlugin({
      filename: '[path].gz[query]',
      algorithm: 'gzip',
      test: new RegExp(
        '\\.(' +
        config.build.productionGzipExtensions.join('|') +
        ')$'
      ),
      threshold: 10240,
      minRatio: 0.8
    })
  )
}

第四步: 在部署的服务器上开启 gzip
nginx: nginx安装目录 -> conf -> nginx.conf.js

http { 
   gzip  on;
   gzip_min_length  1k;
   gzip_buffers     4 16k;
   gzip_http_version 1.1;
   gzip_comp_level 6;
   gzip_types       text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php application/javascript application/json;
   gzip_disable "MSIE [1-6]\.";
   gzip_vary on;

Tomcat: Tomcat安装目录 -> conf -> server.xml

<Connector port="80" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" 
   	           compression="on"   
               compressionMinSize="50" noCompressionUserAgents="gozilla, traviata"   
               compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain,application/javascript"/>

注释:

1、compression="on"           开启压缩功能   
2、compressionMinSize="50"   启用压缩的输出内容大小,这里面默认为2KB
3、noCompressionUserAgents="gozilla, traviata"   对于以下的浏览器,不启用压缩

4、compressableMimeType="text/html,text/xml,text/css,text/plain,application/javascript"  压缩的资源类型,这里有其他项压缩的可以用浏览器看,就是资源的ContentType
posted @ 2020-11-30 10:42  z-7  阅读(640)  评论(0编辑  收藏  举报
另外一个博客站点