【发布时间】:2023-04-05 11:56:01
【问题描述】:
目前流行的浏览器是否存在缓存* XMLHttpRequest 响应的特殊问题,我需要注意这些问题?
我希望能够在每个页面上包含 XMLHttpRequest 查询,作为动态加载与页面类型相关的内容(即 JSON)或行为(如 eval()ed Javascript)的方法,但想确保如果服务器发送了正确的标头,它从服务器接收的资源可以被缓存。
我担心阅读this article which mentions Firefox 1.1 等浏览器不会缓存通过 XMLHTTPRequest 获得的任何内容,并且它总是要求完全发送新数据(使用 Cache-Control 并且没有 If-Modified-Since)服务器发送的标头数。
显然那篇文章已经很老了——我什至不记得有 Firefox 1.1;那么对于当前流行的浏览器,我需要考虑哪些因素?当我特别想要缓存响应时有什么技巧吗?
**为了澄清我的问题,缓存是指客户端缓存,其中服务器发布新鲜信息(以 Cache-Control: max-age 指令或 Expires: 标头的形式)并且浏览器存储其缓存中的响应副本以及到期日期,以便可以从浏览器缓存中满足从后续页面发出的相同资源的未来请求,而无需与服务器进行任何联系。所有主流浏览器都对大多数内容正确执行此操作,但我听说 Firefox 无法对 XMLHttpRequest 内容执行此操作。我要问的是,是否有人知道任何现代浏览器在使用 XMLHttpRequest 时不根据规范缓存响应的情况。*
【问题讨论】:
-
在你的JS中控制它更好,更一致。如果不需要刷新,请不要查询。
-
你是什么意思?你能举个例子吗?我希望能够从服务器获取一些东西,但是如果浏览器将它从前一页的缓存中保存在它的缓存中并且它没有过期,以防止它导致服务器跳闸。我仍然想要数据,但我不能不查询。
标签: javascript ajax caching xmlhttprequest cross-browser