记录一次前端vue优化过程

143 阅读1分钟

打包文件压缩

在一次打包过程中,发现有一个js文件比较大,有两三兆左右,

Snipaste_2022-06-27_13-58-50.png

在网上冲浪过程中发现可以是用gzip的方式压缩大小。

首先安装compression-webpack-plugin插件

npm i -D compression-webpack-plugin

然后在vue.config.js中配置


let productionGzipExtensions = /.(js|css|json|txt|html|ico|svg|woff2)(?.*)?$/i;

module.exports = defineConfig({
  transpileDependencies: true,
  // 打包的时候不输出map文件, map文件使用来定位错误的
  productionSourceMap: false,      
  //gzip压缩配置
  chainWebpack: config => {
    if (process.env.NODE_ENV === 'production') {
      config.plugin("CompressionPlugin").use('compression-webpack-plugin', [{
        filename: '[path][base].gz',
        algorithm: 'gzip',
        // 要压缩的文件(正则)
        test: productionGzipExtensions,
        // 最小文件开启压缩 10kb
        threshold: 10240,
        minRatio: 0.8
      }])
    }
  },
})

npm run build 一下

Snipaste_2022-06-27_14-11-19.png

可以看到压缩后大概有700kb左右,压缩率还是很高的。

光是这样部署到服务器,还是不够的。在服务端也要开启gzip压缩。

这用的是宝塔的nginx

# 开启使用gzip;
    gzip_static on;
    gzip_proxied expired no-cache no-store private auth;
    gzip on;
    gzip_min_length 1k;
    gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript;
    gzip_vary on;
    gzip_disable "MSIE [1-6]\.";

Snipaste_2022-06-27_14-14-26.png

Snipaste_2022-06-27_14-33-52.png

可以看到,从服务端下载的是708kb压缩后的文件。

使用http缓存

Snipaste_2022-06-27_17-00-01.png

在开启缓存后,在设置的时间内就不用重复向服务端请求数据。

Snipaste_2022-06-27_17-05-04.png

expires 1d; // 表示缓存 1 天 
expires 3h; // 表示缓存 3 小时 
expires max; // 表示缓存 10 年 
expires -1; // 表示永远过期。