【问题标题】:Ajax request pending forever on ChromeAjax 请求在 Chrome 上永久挂起
【发布时间】:2017-08-22 11:02:44
【问题描述】:

我在 Chrome 上遇到了一个随机问题(Linux 上的 v60.0.3112.101,但最终用户在其他系统上的生产中也复制了该问题)。 有一个包含歌曲列表的页面,点击其中任何一个都会触发一个 ajax 请求以在服务器上获取文件(以及其他内容)。

在一定数量的“点击”之后(从不使用相同的数量,从不在同一个文件上),应该获取资源的 ajax 请求将永远显示为“待处理”(我已经等待了 30 多分钟)它完成)。

在开发者工具面板的“Timing”选项卡中,请求显示为“stalled”,事实上,Nginx 日志(我们将其用作反向代理)和后端应用程序本身显示该请求从未到达服务器。

我尝试了几件事,但都没有成功:

  • 禁用“预测服务以更快地加载页面”
  • 在每个请求上添加一个随机 uuid 以确保不使用缓存
  • 更新 jquery 和 soundmanager2(这是启动请求的库)
  • 在没有扩展的情况下启动了 Chrome

我还尝试从开发者工具控制台重新运行该请求,它也处于挂起状态。

url = "/api/download/songs/7969/28962/28962_original.mp3?download_key=81b285e61f7880a0a07a977dbc47b78a1d57e3690263a646da65a261957f979a&r=" + Math.random();
$.get(url);

这个问题似乎没有在 Firefox 上发生。

很遗憾,我无法向您展示更多代码。

这是 Chrome 的已知错误吗?是否有任何已知的解决方法?

【问题讨论】:

  • 我很确定我在 Chrome 上观看视频时也有同样的经历。我相信 Chrome 只允许一定数量的服务线程(每个域)用于媒体下载,诀窍是如果你开始但没有完成流式传输媒体,它会继续占用线程。对我来说,解决方案是将preloadnonemetadata 添加到我的视频标签中。您可能需要以某种方式停止已经在流式传输的流式传输内容。

标签: javascript ajax google-chrome


【解决方案1】:

您似乎已达到 Chrome 中的最大 http 连接数。这里有很多与该领域相关的帖子。 这篇文章可能对你有所帮助 How to solve Chrome's 6 connection limit when using xhr polling

【讨论】:

    猜你喜欢
    • 2011-08-26
    • 2019-05-21
    • 2014-01-30
    • 2018-03-22
    • 2015-03-16
    • 1970-01-01
    • 2020-01-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多