我知道有人问过这个问题,但是在现代 REST 实践中,这个问题以前的迭代或者他们的回答都不准确或者不充分。这个问题需要一个明确的答案。
这个问题是众所周知的,IE (甚至11)缓存 AJAX 请求,这是真的很愚蠢。每个人都明白这一点。
没有很好地理解的是,以前的答案都不充分。关于这一问题以前的每一个例子都被标记为已得到以下任一方面的充分回答:
1)对每个请求使用唯一的查询字符串参数(例如 unix 时间戳) ,以便使每个请求 URL 唯一,从而防止缓存。
或者
2)使用 POST 而不是 GET,因为 IE 不会缓存 POST 请求,除非在某些特定的情况下。
或者
3)使用服务器传递的“ cache-control”头。
在涉及现代 REST API 实践的 很多情况下,没有一个答案是充分或实用的。REST API 对于 POST 和 GET 请求具有完全不同的处理程序,具有完全不同的行为,因此 POST 通常不是 GET 的合适或正确的替代品。此外,许多 API 都有严格的验证,并且由于许多原因,当提供查询字符串参数时,将生成500或400个错误,而这些错误是它们不希望看到的。最后,我们经常与第三方或其他不灵活的 REST API 接口,在这些接口中,我们无法控制服务器响应提供的消息头,添加缓存控制消息头也不在我们的能力范围之内。
所以,问题是:
在这种情况下,客户端真的无法阻止即缓存 AJAXGET 请求的结果吗?