我正在使用Express版本4.13.4以及我的app.js的以下代码。我尝试更改app.use(compression())
的位置,但没有显示任何效果。当我运行应用程序时,在查看chrome dev工具响应标题时没有看到压缩的证据,即它没有gzip内容编码标题。
我是节点js的新手。我想gzip压缩我对浏览器的响应。请帮我解决这个问题。
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 :(得分:0)
答案 1 :(得分: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:它对我有用。