【问题标题】:Which browsers have problems caching XMLHTTPRequest responses?哪些浏览器在缓存 XMLHTTPRequest 响应时存在问题?
【发布时间】: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


【解决方案1】:

Mark Nottingham 的 an excellent set of functional tests 演示了浏览器 XMLHttpRequest 缓存行为。在您想要支持的浏览器中加载页面,并确定您可以依赖和不可以依赖哪些技术来缓存您的响应。

【讨论】:

  • 非常感谢。它看起来很有希望,因为 Firefox 确实通过了那些“新鲜度”测试(包括所有带有“过期”的测试)。
  • 脚本似乎不再工作了。在 Chrome 中测试。很多关于控制台中的安全警告
【解决方案2】:

虽然有些浏览器有不同的默认值(默认情况下,IE 会缓存 AJAX 请求的结果,但默认情况下 Firefox 不会),但我知道的所有浏览器都会遵循 http 标头,例如 Cache-Control .因此,只需为您的应用程序正确设置缓存标头即可。

这是一个例子:

    public ActionResult SomeAction()
    {
        var model = [...];
        Response.AddHeader("Cache-Control", "no-cache");
        return Json(model);
    }

现在 IE 和 Firefox 的行为将相同;他们永远不会缓存操作的结果。

【讨论】:

  • 我不太确定。 IE6 的缓存太激进了。我已经被它咬过好几次了。如果您不想缓存查询,请在 URL 中添加随机后缀(未使用的参数也可以)
  • 不幸的是,这与我需要的相反 - 我想确保响应 被缓存。也就是说,如果浏览器可以通过其缓存中尚未过期的先前响应来满足请求,我希望它这样做并且完全阻止并且需要向源服务器发出请求。
  • 哈维尔,这会起作用,但它将缓存策略委托给客户端,恕我直言,这是错误的地方。
  • thomas,我了解您的需求,但我无法为您制定政策。请阅读我包含的链接。查看 public 和 max-age 值。
  • 对不起,我可能还不够清楚。我完全了解 HTTP 规范,包括服务器指定新鲜度信息的所有方式。然而,并不是所有的浏览器都遵守它,我想知道是否有任何与 XMLHTTPRequest 相关的问题。
猜你喜欢
  • 1970-01-01
  • 2018-01-09
  • 2015-08-05
  • 2017-07-16
  • 2013-06-10
  • 2011-10-14
  • 2011-08-18
相关资源
最近更新 更多