如何为非静态文件响应设置max-age

时间:2016-12-18 00:07:18

标签: node.js express

如何在expressjs中为非静态文件响应设置max-age参数。

我的代码:

app.get('/hello', function(req, res) {
    res.set('Content-Type', 'text/plain');
    res.set({'maxAge':5}); 
    res.send("Hello Message from port: " + port);
    res.status(200).end()
})

我试过了:

    res.set({'max-age':5});

还有:

    res.set({'Cache-Control':'max-age=5'});

res.SendFile(file,{maxAge: 5})工作正常 但是静态文件的问题是我看到了' max-age'仅在服务器启动后的第一个http响应中反映在标题中。

所有后续响应标头显示' max-age = 0'即使文件是新鲜的(状态200)

1 个答案:

答案 0 :(得分:3)

您无法使用以下标题设置标题:

res.set({'maxAge':5});

或:

res.set({'max-age':5});

因为它不是设置Cache-Control标头,而是分别设置maxAgemax-age标头,这些标头不是有效的HTTP标头。

您可以使用以下方式进行设置:

res.set('Cache-Control', 'max-age=5');

或:

res.set({'Cache-Control': 'max-age=5'});

请参阅:

app.get('/hello', function(req, res) {
    res.set('Content-Type', 'text/plain');
    res.set('Cache-Control', 'max-age=5');
    res.send("Hello Message from port: " + port);
    res.status(200).end()
});

您可以使用curl查看标题:

curl -v http://localhost:3333/hello

(只使用您的端口而不是3333)

如果在每个响应中都没有包含Cache-Control标题,那么可能是某些中间件会弄乱您的标题,或者您可能有一个更改它们的代理服务器。

另请注意,您使用的是max-age 5秒,因此缓存时间非常短。

请参阅:

相关问题