提供压缩的API响应

时间:2016-04-07 13:55:57

标签: node.js express

我的app.js中有这个:

app.configure(function() {
    app.use(express.cookieParser());
    app.use(express.bodyParser());
    app.use(express.session({
        secret: 'supersecretkeygoeshere',
        store: new MySQLStore(options),
        //cookie: {maxAge: 1000}
    }));
    app.use(passport.initialize());
    app.use(passport.session());   

    app.set('views', path.join(__dirname, 'public'));

    app.use(express.favicon());


    app.use(express.json());
    app.use(express.urlencoded());
    app.use(express.methodOverride());
    app.use(app.router);
    app.use(express.compress());

除了提供静态文件外,我还提供了一个API,如:

app.get('/api/myfun', function(req, res) {
    res.json('Lot of data');
});

静态文件使用Content-Encoding属性值作为gzip提供。当我在浏览器中观察到API的响应时,Content-Encoding属性不是" gzip"。 我还需要做什么才能以gzip格式提供API?

1 个答案:

答案 0 :(得分:1)

您已经在压缩中间件之前添加了路由器中间件,这意味着路由器处理的请求永远不会到达压缩中间件。

您应该更改这些中间件的顺序:

app.use(express.compress());
app.use(app.router);

顺便说一句:您似乎使用的是Express 3,已被弃用。