【发布时间】: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 只允许一定数量的服务线程(每个域)用于媒体下载,诀窍是如果你开始但没有完成流式传输媒体,它会继续占用线程。对我来说,解决方案是将
preload或none或metadata添加到我的视频标签中。您可能需要以某种方式停止已经在流式传输的流式传输内容。
标签: javascript ajax google-chrome