在 express js 4.4.1 中压缩文件 (gzip)

Compressing files (gzip) in express js 4.4.1

我使用 express js 应用程序作为网络服务器,但所有静态内容都已解压缩(js 和 css 文件)。我尝试了几个解决方案,例如使用压缩 https://github.com/expressjs/compression 但无法正常工作。 这是我的做法(仅与压缩使用相关的部分):

var app = module.exports = express();
// all environments
app.set('port', process.env.PORT || 3000);
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.use(morgan('dev'));

app.use(bodyParser.urlencoded({extended: true}));
app.use(bodyParser.json());
app.use(methodOverride());
app.use(cookieParser());

var cacheTime = 86;     // 7 days
app.use(compression());
app.use(express.static(__dirname + '/public',{ maxAge: cacheTime }));

http.createServer(app).listen(app.get('port'), function () {
    console.log('Express server listening on port ' + app.get('port'));
});

Express 中间件总是按照声明的顺序处理。

你有这个:

app.use(express.static(...));
app.use(compression());

表示一个请求是第一个express.static()处理的,当它能够处理这样一个请求时,它会立即产生一个响应,这个请求永远不会被传递给压缩中间件。

如果交换中间件的顺序,像这样:

app.use(compression());
app.use(express.static(...));

所有请求都将首先通过压缩中间件,它会设置一些东西以便响应被压缩。