3

我正在尝试使用connect.compress()中间件来压缩我对客户端的响应。我可以部分让它工作,但是当我使用响应添加自己的响应时res.end,不再压缩。

压缩响应:

app = connect()
      .use(connect.compress())
      .use(connect.query())
      .use(connect.json());

未压缩的响应:

app = connect()
      .use(connect.compress())
      .use(connect.query())
      .use(connect.json())
      .use(function (req, res) {
        res.end('hello');
      });

我希望能够回复我自己的消息,但仍将内容压缩。

4

2 回答 2

1

我对小型 HTTP 响应主体也有同样的问题。如果响应体的 Content-Length < compress' 阈值(默认为 1024 字节),则响应将不会被压缩,没有警告(参见源代码)。

解决方案是禁用阈值。

app.use(connect.compress({ threshold: false }));

作为 Connect 的新玩家,我希望 API 会记录哪些默认值将到位(即:不指定默认值为 1024 字节的阈值)。我个人认为不指定阈值应将其默认为 0;我不想要一个阈值,否则我会在配置中指定它。

于 2014-04-12T03:25:09.667 回答
0

尝试替换这个:

res.end('hello');

有了这个:

res.end(new Buffer('hello', 'utf8'));

如果可行,则可能是您的连接中间件版本中的错误。

于 2012-11-02T22:08:58.980 回答