nodejs中的压缩json

时间:2013-03-14 10:40:46

标签: node.js compression connect

我在使用connect编写的nodejs中有一个服务器。我将一些数据暴露为json。我必须在发送之前压缩数据。我在连接中使用了压缩功能,但我不知道如果压缩或不压缩数据如何检查。以下是我的代码:

var connect = require('connect')
 , http = require('http');

var app = connect()

 .use(connect.compress(console.log("I have compressed data")))

.use(function(req, res){
res.setHeader('Content-Type', 'application/json');
//res.end("store_id: 'S3000981'");

res.end('{"store_id": "S3000990"}');
});
http.createServer(app).listen(3000);

对此有任何想法都会非常有用。

1 个答案:

答案 0 :(得分:1)

运行您的服务器,试试这个:

curl -H 'Accept-Encoding: gzip' -v localhost:3000 

如果您看到以下内容,则会压缩响应:

< Content-Encoding: gzip

此外,这不符合您的想法,可能会产生副作用:

.use(connect.compress(console.log("I have compressed data")))

如果要在压缩响应数据时从服务器记录消息,请尝试以下操作:

.use(connect.compress())
.use(function(req, res, next) {
  res.on('header', function() {
    var encoding = res.getHeader('Content-Encoding') || '';
    if (encoding.indexOf('gzip') != -1 || encoding.indexOf('deflate') != -1)
    {
      console.log("I have compressed data");
    }
  });
  next();
})