我有一个移动应用程序,它会定期从Node.js服务器中提取JSON文件。
JSON响应是使用随机值动态生成的。它根本不应该缓存。
我试图阻止缓存:
app.get('/important.json', function(req, res) {
res.setHeader("Cache-Control", "no-cache, no-store, must-revalidate");
res.setHeader("Pragma", "no-cache");
res.setHeader("Expires", 0);
res.json(...);
});
然而,当移动应用程序重新加载json时,它仍然从服务器获得304 Not Modified响应(从Fiddler观察)。
有人可以建议反缓存是否正确完成?是因为etag吗?如果etag是问题,我可以专门为此api /端点禁用etag吗?
答案 0 :(得分:2)
首先,尝试禁用etag:
app.set('etag', false);
其次,您可以拦截所有对节点发出的请求,其中中间件位于所有其他处理程序的顶部。
app.use(function(req, res, next) {
//delete all headers related to cache
req.headers['if-none-match'] = '';
req.headers['if-modified-since'] = '';
next();
});