3

ミドルウェアを使用しconnect.compress()て、クライアントへの応答を gzip しようとしています。部分的に動作させることはできますが、応答を使用して独自の応答を追加すると、res.endgzip されなくなります。

gzip された応答:

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

gzip されていない応答:

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

自分のメッセージで返信できるようにしたいのですが、コンテンツは gzip 圧縮されたままです。

4

2 に答える 2

1

小さな HTTP 応答本文でも同じ問題が発生しました。応答本文の Content-Length < 圧縮のしきい値 (デフォルトは 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 に答える