现代浏览器是否会缓存ajax响应?

7

我最近发现我们在所有WebApi响应中使用了Cache-Control:no-cache。 我知道在浏览器缓存变化很多之前,你永远不知道浏览器是否可以缓存您的json数据,因此这一点非常重要。

据我所知,现代浏览器都不会缓存ajax响应,因此此标头已不再需要。但我真的想再次确认一下,并在此询问有关此行为的情况,因为找不到任何关于该主题的最近帖子。

所以问题真正是:从SPA应用程序调用WebApi时,我们是否仍然需要设置Cache-Control:no-cache,如果需要,则哪些浏览器会进行缓存?


可能是Can't the browser just use its cache from prior ajax calls?的重复问题。 - Leonid Vasilev
1
我认为这不是重复的问题,因为另一个问题实际上已经8年了,而且很多事情都发生了变化,这就是为什么我在标题中包含了“现代”的原因。在发布此问题之前,我已经阅读过那个问题。 - Ilya Chernomordik
1个回答

7
根据HTTP/1.1规范,浏览器HTTP缓存键是请求HTTP方法和URI的组合。浏览器不考虑请求的方式:

主缓存键由请求方法和目标URI组成。然而,由于今天常见的HTTP缓存通常仅限于缓存对GET的响应,因此许多缓存会拒绝其他方法,并仅使用URI作为主要缓存键。

因此,如果您执行的请求是可缓存的,则仍需要该标题值。有关更多详细信息,请查看HTTP Caching MDN页面默认使用http / 1.1的Web浏览器?问题
此外,您可能需要为IE添加另一个标题。有关更多信息,请查看使IE缓存资源但始终重新验证问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接