vue项目配置gzip压缩

为什么要配置gzip呢?

因为快啊,以 elementUI 为例,657KB大小压缩过后为191KB

有什么缺点?

服务器压缩一遍,客户端解压一遍,消耗一定性能

我们可以在打包的时候将js或一些静态文件再打包成.js.gz的格式,方便nginx等工具可以不用压缩直接发送压缩好的文件到客户端

怎么做?

以vue-cli的vue.config.js为例

module.exports = {
  chainWebpack(config) {
    config
      .when(process.env.NODE_ENV === 'production',
        config => {
          config
            .plugin('CompressionWebpackPlugin')
            .use('compression-webpack-plugin', [
              {
                filename: '[path].gz[query]',
                // 目标资源名称。 [file] 会被替换成原始资源。[path] 会被替换成原始资源的路径, [query] 会被替换成查询字符串。默认值是 "[path].gz[query]"。
                algorithm: 'gzip',
                // 算法,默认'gzip'
                test: /\.(js|css)$/,
                // 所有匹配该正则的资源都会被处理。默认值是全部资源。
                // 这里只匹配了js、css文件
                threshold: 10240,
                // 只有大小大于该值的资源会被处理。单位是 bytes。默认值是 0。
                minRatio: 0.8
                // 只有压缩率小于这个值的资源才会被处理。默认值是 0.8。
              }
            ])
            .end()
        })
  }
}

nginx配置

gzip on;
gzip_min_length  1k;
gzip_buffers     4 16k;
gzip_http_version 1.1;
gzip_comp_level 2;
gzip_types     text/plain application/javascript application/x-javascript text/javascript text/css application/xml application/xml+rss;
gzip_vary on;
gzip_proxied   expired no-cache no-store private auth;
gzip_disable   "MSIE [1-6]\.";

完成后如何查看是否有效呢,先重启nginx,然后随手点个js文件看看, etag 标签不带w就是有效

发表评论

电子邮件地址不会被公开。 必填项已用*标注