是否自动在浏览器中缓存?

zda*_*ter 15 caching http

我有一个JavaScript应用程序发送请求到REST API,服务器的响应有缓存标题(如ETag,缓存控制,到期).是否在浏览器中自动缓存响应,或者应用程序必须实现某种机制来保存数据?

小智 6

AJAX 请求与普通请求没有什么不同 - 它是浏览器发送的 GET/POST/HEAD/任何请求,并且按此处理。这在这里得到了证实:

\n\n
\n

现代浏览器的 HTTP 和 Cache 子系统的级别比 Ajax\xe2\x80\x99s XMLHttpRequest 对象要低得多。在这个级别,浏览器不知道也不关心 Ajax 请求。它只是遵循基于服务器返回的响应标头的正常 HTTP 缓存规则。

\n
\n\n

根据jQuery 文档,缓存也可以通过至少一种常用方式失效(附加查询字符串):

\n\n
\n

缓存(默认值:true,对于 dataType \'script\' 和 \'jsonp\' 为 false)

\n\n

类型:布尔值

\n\n

如果设置为 false,将强制浏览器不缓存请求的页面。注意:将缓存设置为 false 只能正确处理 HEAD 和 GET 请求。它的工作原理是将“_={timestamp}”附加到 GET 参数。其他类型的请求不需要该参数,但在 IE8 中,当对已通过 GET 请求的 URL 进行 POST 时除外。

\n
\n\n

简而言之,给定相同的标头,AJAX 响应的缓存方式与其他请求相同。

\n