【发布时间】:2016-09-09 05:43:43
【问题描述】:
我有一个移动应用程序,它会定期从 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/endpoint 禁用 etag 吗?
【问题讨论】:
-
我在一个简单的快速服务器上试过这个,当我多次刷新页面时我得到 200,所以它对我有用。如果我注释掉
res.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); res.setHeader("Pragma", "no-cache"); res.setHeader("Expires", 0);我得到 304 not modified status 所以你正确使用了缓存控件,它可能与 fiddler 有关,在 chrome 上试试 -
etag 很好,即使您告诉客户端不要缓存它,etag 也不会因后续请求而更改。仅当您发送的内容发生更改时,etag 才会更改,无论哪种方式,您是否正确设置了您在此处所做的缓存控件都没有关系