NodeJS Express和deflate / gzip压缩

时间:2017-01-12 10:02:35

标签: node.js express gzip deflate

我使用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浏览器完成的截图。

http://imgur.com/6o5QuVC

因此,您可以看到此文本文件在发送时未压缩。 您有什么建议吗?

在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浏览器中看到截图。

http://imgur.com/FZZyPeP

我也看到了压缩调试输出,但压缩由于某种原因不起作用。

0 个答案:

没有答案