vite打包优化vite-plugin-compression的使用

文章介绍了前端使用Gzip压缩资源以提高加载速度的方法,包括在vue-cli和vite中配置compression-webpack-plugin和vite-plugin-compression插件。同时,讨论了浏览器如何解析gzip压缩的内容,以及在Nginx和Express服务器上的配置。文章还提供了压缩插件的配置选项示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

什么是gzip 压缩

当前端资源过大时,服务器请求资源会比较慢。前端可以将资源通过Gzip压缩使文件体积减少大概60%左右,压缩后的文件,通过后端简单处理,浏览器可以将其正常解析出来。

如果浏览器的请求头中包含c ontent-encoding: gzip,即证明浏览器支持该属性。

gzip的使用

前端压缩

前端使用gzip压缩代码很容易,通过插件即可。

vue-cli中使用compression-webpack-plugin插件

const compressionWebpackPlugin = require("compression-webpack-plugin");
module.exports = {
  configureWebpack: {
    plugins: [
      // 开启gzip
      new compressionWebpackPlugin({
        filename: "[path][base].gz",
        algorithm: "gzip",
        test: /.js$|.css$|.html$/,
        threshold: 10240, // 对超过10k的数据压缩
        minRatio: 0.8 // 压缩率小于0.8才会压缩
      }),
		]
}

vite中使用vite-plugin-compression插件

import viteCompression from 'vite-plugin-compression'
export default defineConfig({
  plugins:[
    viteCompression()
  ]
})

浏览器解析

压缩的代码放到服务器后,需要后端配置一些东西,浏览器才可以解析

1、Nginx服务器只需要配置:

2、nodejs启用gzip以express框架为例:

npm install compression 
npm install @types/compression --save-dev
import compression from 'compression';
...
const app = express();
app.use(compression());
...

compression-webpack-plugin

插件打包对比

我们着重介绍下改插件的使用。如果我们项目中不配置此插件,打包后的项目资源如下:


配置此插件后:

import { defineConfig } from 'vite
import viteCompression from 'vite-plugin-compression'
export default defineConfig({
  plugins:[
    viteCompression()
  ]
})

通过打包结果,我们看出部分文件进行了gzip压缩。

配置项

可配置项名称数据类型默认值释义
verbosebooleantrue是否在控制台中输出压缩结果
filterRegExp or (file: string) => boolean/.(jsmjs
disablebooleanfalse是否禁用
thresholdnumber1025如果体积大于阈值,则进行压缩,单位为b
algorithmstringgzip压缩算法,可选[‘gzip’,‘brotliCompress’,‘deflate’,‘deflateRaw’]
extstring.gz生成的压缩包的后缀
compressionOptionsobject-对应压缩算法的参数
deleteOriginFileboolean-压缩后是否删除源文件

我们简单配置下试试

import { defineConfig } from 'vite
import viteCompression from 'vite-plugin-compression'
export default defineConfig({
  plugins:[
    viteCompression(
      {
        algorithm: 'gzip',
        threshold: 10240,
        verbose: false,
        deleteOriginFile: true
      }
    )
  ]
})

这个配置项,我们通过algorithm指定了压缩算法为gzip;通过threshold指定文件大于10240b(10kb)时才压缩文件;通过verbose禁止在控制台输出压缩结果;通过deleteOriginFile指定压缩完文件后删除源文件。

大家可以根据自己的需求配置。

### 配置 `vite-plugin-compression` 插件的缓存功能 为了实现 `vite-plugin-compression` 插件中的缓存功能,可以通过配置选项来指定哪些文件应该被压缩以及如何处理这些文件。具体来说,在 `vite.config.js` 文件中定义插件参数可以有效管理缓存行为。 以下是详细的配置说明: #### 基本安装命令 首先需要通过 npm 或 yarn 安装该插件作为开发依赖项[^1]: ```bash npm install vite-plugin-compression --save-dev ``` #### 缓存配置实例 在项目的根目录下找到或创建 `vite.config.js` 文件,并按照如下方式设置插件: ```javascript import { defineConfig } from 'vite'; import compression from 'vite-plugin-compression'; export default defineConfig({ plugins: [ compression({ algorithm: 'gzip', // 可选算法, 如'gzip','brotliCompress' threshold: 1024 * 5, // 设置触发压缩的最小文件大小,默认为8k ext: '.gz', // 输出扩展名 deleteOriginFile: false, // 是否删除原始未压缩版本,默认false保留原版 cache: true, // 启用缓存机制 verbose: true // 控制台日志输出开关 }) ] }); ``` 上述代码片段展示了如何启用缓存(`cache`)并调整其他相关属性以优化构建过程。当设置了 `cache:true` 参数后,Vite 将会利用其内部缓存策略减少重复计算开销,从而加快后续编译的速度。 对于已经存在的压缩文件,如果源文件没有变化,则不会重新生成相同的压缩包;只有当检测到输入发生变化时才会执行新的压缩操作。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值