禁用ETAG以获取JSON响应,但为静态资产启用ETAG

时间:2018-05-25 22:43:25

标签: node.js http express http-headers etag

在我们的Express中间件中,我们打电话给:

 app.enable('etag');

问题在于,对于JSON请求,客户端将获得应该始终重新评估/重新发送的JSON请求的304状态代码。

所以我的问题是,使用Express中间件,如何为静态资产启用etag,但是为JSON请求禁用它?

我可能需要检查每个请求的标头,并为每个请求启用/禁用etags?

1 个答案:

答案 0 :(得分:0)

所以在制作中,似乎这会起作用:

app.enable('etag');

app.use("/public", express.static(path.join(__dirname, "..", "public")));

app.use(function (req, res, next) {
  // we don't want to cache any JSON response
  res.setHeader('Cache-Control', 'no-cache, no-store');
  next();
});

app.use(function(req,res){
   res.json({some:'this will never be cached'});
});

我认为这将实现允许客户端缓存静态资产,但它永远不会缓存客户端中的任何JSON响应。