【问题标题】:Multiple Ajax requests for same URL对同一 URL 的多个 Ajax 请求
【发布时间】:2012-02-08 08:02:31
【问题描述】:

我多次对同一个 URL 进行异步调用,但响应是按顺序发出的。请看附图,只有在第一个请求完成后才开始请求,后续请求也是如此。

但如果 URL 不同,则响应不是连续的。请确认我是否正在请求一个 URL,firefox 不会对同一个 URL 发出另一个请求吗?

【问题讨论】:

  • 您是否确认您的接口能够处理多个请求?
  • 我相信持续时间栏显示不同的阶段,将鼠标悬停在它上面显示 DNS 查找和连接,如果它是服务器端接口不支持并发,你会看到第二个绿色板请求开始大致相同的点。
  • 如果我对此的理解有误,请更正。当我将第二个请求的状态栏悬停时,“+1.44s Started”这意味着它在完成第一个请求后启动请求,该请求在 1.44s 内完成。但如果我使用不同的 URL,每个请求的开始时间都为“0”
  • Chrome 22 也有这种行为。
  • Chrome 23 也有这种行为。

标签: ajax firefox


【解决方案1】:

Necko 的缓存每个缓存条目只能处理一个写入器。因此,如果您对同一个 URL 发出多个请求,第一个请求将打开缓存条目进行写入,后面的请求将阻塞打开的缓存条目,直到第一个请求完成。正在进行重新架构缓存以消除此限制的工作。

【讨论】:

  • 是否会为查询字符串参数添加后缀,例如 ?_cacheBuster=[randomNumber] 解决限制?
  • 是的。这就是我所做的,实际上我添加了时间戳来区分请求。
  • 请注意,这发生在 FF、Chrome 和 IE9(我都测试过)中。甚至会尝试为完全相同的 URL 加载选项卡。使用后缀在所有使用测试的情况下都有效。
【解决方案2】:

一般来说,浏览器会限制它们向特定主机名提供的并发请求的数量,在过去是 2,但现在大多数浏览器都提出了这个限制。定义代理也会影响某些浏览器中的这些限制。同样,这些都是在客户端强制执行的。但是,无论如何它应该不止一个。 Firebug 可能也在降低限制,请检查 about:config 以了解并发配置。

你确定你没有等到回调执行后再启动下一个请求,因为你只有一个我怀疑这到底是怎么回事?

【讨论】:

  • 感谢 wtfcoder,我很确定控件在回调之前不会等待发出第二个请求。但是当我在萤火虫中看到响应时,它是连续的。 Firefox 是否会限制对等待响应的同一 URL 发出第二次请求。
猜你喜欢
  • 1970-01-01
  • 2011-11-28
  • 2013-05-23
  • 1970-01-01
  • 1970-01-01
  • 2017-03-04
  • 2018-11-01
  • 1970-01-01
相关资源
最近更新 更多