使用node.js表达,不压缩jpeg图像



我是一个初学者,正在尝试使用node.js和Express框架提供gzipped jpegs。我在/public文件夹中有这些图像。我的代码看起来像:

// require the express module
var express = require('express');
var app = express();
app.use(express.logger());
//compress static content
app.use(express.compress());
// GET verbs
app.get('/', function(request, response) {
  response.send('Hello World!');
});

// GET /public/*
app.use(express.static(__dirname + '/public'));
// Start the app on port 8080 if PORT not set
var port = process.env.PORT || 8080;
app.listen(port, function() {
  console.log("Listening on " + port);
});

我是不是错过了什么?在Chrome调试器上,在禁用缓存的情况下(确保HTTP响应代码为200),在响应中找不到内容编码:gzip标头。

有没有线索表明我遗漏了什么?

免责声明:您真的不应该尝试gzip图像。你似乎有一个很好的理由,但我写这篇文章是为了未来的读者:)。

如果你看一下压缩中间件的源代码,你会发现:

exports.filter = function(req, res){
  return /json|text|javascript|dart|image/svg+xml|application/x-font-ttf|application/vnd.ms-opentype|application/vnd.ms-fontobject/.test(res.getHeader('Content-Type'));
};

默认情况下,只压缩文本文件。这是合乎逻辑的,因为像图像这样的二进制文件已经被压缩了。

幸运的是,你可以通过自己的:

express.compress({
  filter: function (req, res) {
    return true;
  })
});

这应该会压缩所有内容。

最新更新