我意识到已经提出了这个问题,但是在现代REST实践中,该问题的先前迭代及其答案都不够准确或足够。这个问题需要一个明确的答案。
这个问题是众所周知的,IE(甚至11)缓存AJAX请求,这确实是愚蠢的。每个人都明白这一点。
什么是不容易理解的是,没有对以前的答案是足够的。关于SO的此问题的每个先前实例都被以下任一点标记为充分回答:
1)对每个请求使用唯一的查询字符串参数(例如unix时间戳),以使每个请求的URL唯一,从而防止缓存。
- 要么 -
2)使用POST而不是GET,因为IE在某些特殊情况下不会缓存POST请求。
- 要么 -
3)使用服务器传递的“ cache-control”标头。
IMO在涉及现代REST API实践的许多情况下,这些答案都不足够或不切实际。REST API的POST和GET请求处理程序将完全不同,其行为也将完全不同,因此POST通常不是GET的适当或正确替代方案。同样,许多API对其都有严格的验证,并且由于多种原因,当喂入它们不期望的查询字符串参数时,将产生500或400个错误。最后,我们经常与第三方或其他不灵活的REST API交互,在这些API中我们无法控制服务器响应提供的标头,并且添加缓存控制标头不在我们的能力范围内。
因此,问题是:
在这种情况下,客户端是否真的无法采取任何措施来防止IE缓存AJAX GET请求的结果?