前端 webpack在打包时借助​compression-webpack-plugin​插件实现gzip压缩

文章介绍了如何在Vue项目中利用compression-webpack-plugin进行gzip压缩,以减少文件体积,提高HTTP请求速度。主要步骤包括安装插件、配置vue.config.js,并通过检查生成的.gz文件和HTTP响应头中的Content-Encoding来验证压缩效果。

gzip压缩是一种http请求优化方式,通过减少文件体积来提高加载速度。html、js、css文件甚至json数据都可以用它压缩,可以减小60%以上的体积。

1、下载compression-webpack-plugin

npm i compression-webpack-plugin --save

2、在vue.config.js使用

// 导入compression-webpack-plugin
const CompressionWebpackPlugin = require('compression-webpack-plugin');
// 定义压缩文件类型
const productionGzipExtensions = ['js', 'css'];

module.exports = {
    configureWebpack: config => {
        // 开发环境不配置
        if (process.env.NODE_ENV !== 'production') return
        // 生产环境才去配置
        return {
             plugins: [
                new CompressionWebpackPlugin({ //zip压缩插件
                    filename: '[path].gz[query]',
                    algorithm: 'gzip',
                    test: new RegExp('\\.(' + productionGzipExtensions.join('|') + ')$'),//匹配文件名
                    threshold: 10240,//对10K以上的数据进行压缩
                    minRatio: 0.8,
                    deleteOriginalAssets: false,//是否删除源文件
                }),
             ],
        }
    },
}

判断是否配置成功

1、Vue打包的目录,对应压缩文件中就会多了.gz的文件;

2、在http请求中,也可以看到响应头多了Content-Encoding: gzip,没开启gzip压缩是没这个的。

Webpack 3 中配置和使用 `compression-webpack-plugin` 插件,可以按照以下步骤进行操作,以实现对项目构建输出文件的 Gzip 压缩。 ### 安装插件 首先需要安装适用于 Webpack 3 的 `compression-webpack-plugin` 版本。由于 Webpack 3 对插件版本有兼容性要求,建议使用 `compression-webpack-plugin@1.1.12`,该版本Webpack 3 兼容性较好: ```bash npm install --save-dev compression-webpack-plugin@1.1.12 ``` ### 配置 webpack.config.js 接下来,在 Webpack 的配置文件 `webpack.config.js` 中引入并配置该插件。确保你的配置文件中已正确设置 `plugins` 数组,并将压缩插件加入其中: ```javascript const path = require('path'); const CompressionWebpackPlugin = require('compression-webpack-plugin'); const productionGzipExtensions = ['js', 'css']; module.exports = { entry: './src/index.js', output: { filename: 'bundle.js', path: path.resolve(__dirname, 'dist') }, plugins: [ new CompressionWebpackPlugin({ filename: '[path].gz[query]', algorithm: 'gzip', test: new RegExp('\\.(' + productionGzipExtensions.join('|') + ')$'), threshold: 10240, minRatio: 0.8, deleteOriginalAssets: false }) ] }; ``` #### 参数说明: - **filename**: 指定压缩后的文件名格式,`[path]` 表示原始资源路径,`[query]` 表示查询字符串。 - **algorithm**: 使用的压缩算法,通常为 `'gzip'`。 - **test**: 正则表达式,匹配哪些文件需要被压缩,这里配置为 `.js` 和 `.css` 文件。 - **threshold**: 只有大小大于该值(单位:字节)的资源才会被压缩,例如 `10240` 表示 10KB。 - **minRatio**: 只有压缩率小于该值的资源才会被处理,默认是 `0.8`。 - **deleteOriginalAssets**: 是否删除原始未压缩文件,默认为 `false`,即保留原始文件[^4]。 ### 构建项目 完成配置后,执行 Webpack 构建命令: ```bash npm run build ``` 构建完成后,你将在输出目录(如 `dist/`)中看到原始文件及其对应的 `.gz` 压缩文件。 ### 注意事项 - 确保服务器端支持 Gzip 解压,否则即使前端启用了 Gzip 压缩,也无法生效。 - 不同 Webpack 版本插件的支持情况不同,Webpack 3 不适合使用最新版本的 `compression-webpack-plugin`,否则可能导致构建失败或警告[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值