2013-03-14 99 views
1

我在使用connect編寫的nodejs中有一個服務器。我將一些數據公開爲json。我必須在發送前壓縮數據。我在連接中使用了壓縮功能,但我不知道如何檢查數據是否壓縮。以下是我的代碼:在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

運行您的服務器,試試這個:

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

如果你看到下面的出現,響應被壓縮:

< Content-Encoding: gzip 

而且,這並不做你認爲它會,並且可能有副作用:

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

如果您希望在響應數據編譯時從服務器記錄消息ssed,試試這個代替:

.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(); 
}) 
+1

謝謝它工作:) – 2013-03-14 11:29:16