Skip to content
On this page

koa-compress

简介

koa-compress 是一个用于压缩 HTTP 响应数据的中间件,支持 gzip、deflate 和 br(Brotli)压缩算法。通过压缩响应数据,可以显著减少传输数据的大小,提高网站性能。

安装

bash
npm install koa-compress

基本使用

javascript
const Koa = require('koa');
const compress = require('koa-compress');

const app = new Koa();

// 注册中间件
app.use(compress());

app.use(async (ctx) => {
  ctx.body = { message: '这个响应将被压缩' };
});

app.listen(3000);

高级配置

javascript
const Koa = require('koa');
const compress = require('koa-compress');

const app = new Koa();

app.use(compress({
  // 启用阈值,当响应体大小超过该值时才会启用压缩
  threshold: 2048, // 2kb
  
  // 压缩级别 (0-9),级别越高压缩比越大,但CPU消耗也越大
  level: 6,
  
  // 指定要压缩的响应类型
  filter: function (content_type) {
    return /text|javascript|json|xml|html/i.test(content_type);
  },
  
  // 配置压缩算法的优先级
  br: false, // 禁用 Brotli 压缩
  gzip: {
    flush: require('zlib').constants.Z_SYNC_FLUSH
  },
  deflate: {
    flush: require('zlib').constants.Z_SYNC_FLUSH
  }
}));

app.use(async (ctx) => {
  ctx.body = { 
    message: '这是一个大型响应',
    data: '...大量数据...'
  };
});

app.listen(3000);

注意事项

  1. 不要对图片、视频等已经压缩过的文件再次进行压缩
  2. 合理设置压缩阈值,避免对小文件进行不必要的压缩
  3. 根据服务器CPU资源选择合适的压缩级别
  4. 在反向代理(如 Nginx)已经配置了压缩的情况下,可以考虑不在应用层做压缩

要保持清醒 永远不抱有意外的幻想 凭空的期待最要命