2016-03-14 58 views
0

我正在使用Express 4.13.4版以及我的app.js的以下代碼。我試圖改變app.use(compression())的位置,但沒有顯示任何效果。當我運行該應用程序時,在查看chrome開發工具響應標頭時看到沒有壓縮的證據,即它沒有gzip內容編碼標頭。 我是新來的節點js.I想gzip壓縮我對瀏覽器的響應。請幫我解決這個問題。Node.js:無法使用快遞壓縮響應

var compression = require('compression') 
var express = require('express'); 
var http = require('http'); 
var app = express(); 
app.use(compression()); 
var settings = { 
    UiServerPort:   8080, 
    ApiServerHost: "localhost", 
    ApiServerPort:  12121 
}; 

app.use('/ui', express.static('ui')); 
app.all('/api/*', function (req, res) { 
    var options = { 
     host: settings.ApiServerHost, 
     port: settings.ApiServerPort, 
     path: req.url.substring(4), 
     method: 'POST' 
    }; 

    var requestData = ''; 
    req.on('data', function (data) { requestData += data; }); 
    req.on('end', function() { 
     var request = http.request(options, function (response) { 
      var responseData = ''; 
      res.flush(); 
      response.on('data', function (data) { responseData += data; }); 

      response.on('end', function() { 
       res.statusCode = response.statusCode; 
       res.write(responseData); 
       res.end(); 
      }); 
     }); 
     request.write(requestData); 
     request.end(); 
    }); 
}); 
app.listen(settings.UiServerPort) 
+0

任何人都可以幫我解決這個問題嗎?我還沒有收到答覆。謝謝 – user1840131

回答

0

您看到「Vary Accept-Encoding」?如果你不使用壓縮,這將不會顯示。我粘貼你的代碼,但它不能運行。

+0

瀏覽器請求標頭上的Accept-Encoding表示:gzip,deflate。你在問什麼? – user1840131

0

而不是

app.use(compression()) 

您應該添加這段代碼:

app.use(compression({filter: shouldCompress})) 

function shouldCompress (req, res) { 
    if (req.headers['x-no-compression']) { 
     // don't compress responses with this request header 
     return false 
    } 

    // fallback to standard filter function 
    return compression.filter(req, res) 
} 

PS:我的作品。