在打包时可以借助 compression webpack plugin 实现gzip压缩,首先需要安装该插件:npm i-D compression-webpack-plugin
//vue.config.js const CompressionPlugin = require("compression-webpack-plugin") module.exports = { publicPath: './', assetsDir: 'static', productionSourceMap: false, configureWebpack: config => { return { plugins: [new CompressionPlugin({ test: /\.js$|\.html$|\.css/, threshold: 10240, deleteOriginalAssets: false })] } } }
执行npm run build就可以看到在dist/static/js文件夹下文件都多了.gz的后缀文件,但是请求时服务器应该返回哪一个文件呢,如果服务器返回了.gz格式的文件就达到效果,如果服务器依然返回请求的源文件,那就达不到我们的目的了。
接下来需要服务器配置,在nginx中启用gzip压缩,代码如下
gzip on;
gzip_types text/plain application/javascript text/css application/xml text/javascript application/x-javascript;
打开页面,在network中可以看到请求的js的size是压缩后的size,并且response headers下有Content-Encoding:gzip即表明gzip压缩成功了