express.js压缩中间件不起作用

我的应用程序中有以下中间件:

app.use(express.favicon(__dirname + '/static/public/images/favicon.ico')); app.use(express.compress()); app.use(express.json()); app.use(express.urlencoded()); app.use(express.cookieParser('SECRET!')); app.use(express.static(__dirname + config.static_path, {maxAge: 365 * 86400000})); app.use(express.session({secret: 'SECRET!'})); app.use(flash()); app.use(passport.initialize()); app.use(passport.session()); app.use(app.router); 

标题示例: jquery.js头文件

但静态内容不压缩。 可能是什么问题呢?

有几个原因可能导致您的静态内容不能被压缩:

  • express.compress保持最小的文件大小阈值; 大小低于此阈值的文件(默认:1024字节)将不会被压缩;
  • express.compress还维护一个内容types的白名单进行压缩; 如果您提供的文件的内容types不在该列表中,则该文件也不会被压缩;

修理:

 app.use(express.compress({ threshold : 0, // or whatever you want the lower threshold to be filter : function(req, res) { var ct = res.get('content-type'); // return `true` for content types that you want to compress, // `false` otherwise ... } })); 

(作为参考, 这是使用的默认filterfunction)

问题是重新路由到第80个港口,如:

 iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080 

感谢@robertklep的帮助!