如何在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)
答案 0 :(得分:3)
您无法使用以下标题设置标题:
res.set({'maxAge':5});
或:
res.set({'max-age':5});
因为它不是设置Cache-Control
标头,而是分别设置maxAge
或max-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秒,因此缓存时间非常短。
请参阅: