压缩快速js 4.4.1中的文件(gzip)

时间:2016-05-09 11:57:34

标签: javascript node.js express gzip

我使用express js app作为Web服务器,但所有静态内容都是解压缩的(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'));
});

1 个答案:

答案 0 :(得分:9)

Express中间件始终按声明顺序处理。

你有这个:

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

这意味着express.static()处理的请求首先处理,当它处理此类请求时,它会立即生成响应,并且请求永远不会传递给压缩中间件。

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

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

所有请求将首先通过压缩中间件,这将设置内容,以便响应将被压缩。