我使用NodeJS Express v4.14进行了压缩。我有以下代码:
var express = require('express');
var app = express();
var compression = require('compression');
function shouldCompress(req, res) {
return true;
}
app.use(compression({ threshold: 0, filter: shouldCompress }));
app.use(express.static(__dirname + '/dist'));
app.all("/*", function(req, res, next) {
res.sendFile('text.txt', { root: __dirname + '/dist' });
});
var server = app.listen(3000, function () {
var host = server.address().address;
var port = server.address().port;
console.log('Example app listening at http://%s:%s', host, port)
});
我在Windows 7 64位上使用NodeJS。我从Windows控制台运行此示例:
SET DEBUG=compression
SET NODE_ENV=production
node index.js
但是当我尝试运行此代码时,我没有看到我的返回结果是压缩的。这是从Firefox浏览器完成的截图。
因此,您可以看到此文本文件在发送时未压缩。 您有什么建议吗?
在Windows控制台中,我可以看到如下调试消息:
compression gzip compression +10ms
所以似乎压缩代码正在运行。我还试图清除浏览器 缓存,但它没有帮助我。
提前致谢。 问候 斯坦
更新: 我尝试使用标准JADE模板替换SendFile调用,该模板填充了纯文本。这是一个完整的例子:
var express = require('express');
var app = express();
var compression = require('compression');
app.set('views', './views');
app.set('view engine', 'jade');
function shouldCompress(req, res) {
return true;
}
app.use(compression({ threshold: 0, filter: shouldCompress }));
app.use(express.static(__dirname + '/dist'));
app.all("/*", function(req, res, next) {
res.render('index');
});
var server = app.listen(3000, function () {
var host = server.address().address;
var port = server.address().port;
console.log('Example app listening at http://%s:%s', host, port)
});
但它也没有取得成功。您可以在Firefox浏览器中看到截图。
我也看到了压缩调试输出,但压缩由于某种原因不起作用。