用node.js表示不压缩jpeg图像

aru*_*ine 2 javascript gzip node.js express

我(初学者)尝试使用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);
});
Run Code Online (Sandbox Code Playgroud)

我错过了什么吗?在Chrome调试器上,禁用缓存(确保HTTP响应代码为200),在响应中找不到content-encoding:gzip标头.

关于我缺少什么的任何线索?

Lau*_*rin 12

免责声明:你真的不应该尝试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'));
};
Run Code Online (Sandbox Code Playgroud)

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

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

express.compress({
  filter: function (req, res) {
    return true;
  })
});
Run Code Online (Sandbox Code Playgroud)

这应该压缩一切.