并发请求过多,导致页面脚本执行阻塞

最近遇到一个问题,服务器的执行效果和本地调试的效果不一致。需求是这样:上传50张图片,只要一张图片处理完,立马弹出一个框显示处理结果,其他图片处理结果异步回显。后端因为特殊原因,期待前端连续发50个请求,而不是一次发送一个请求。但是出现了个问题:

1、页面渲延迟,变得卡顿。图片上传后,有一张图片的处理结果已经返回,但是弹框迟迟不弹出,直到有40多个处理结果返回的时候,弹框才出现;

2、页面脚本执行被阻塞。弹框出现后,脚本的执行被阻塞,很多执行方法要等待40多个处理结果返回的时候,才能执行;

原来大概的代码如下:

for(var i = 0; i < 50; i++) {
   uploadFile(files[i]);
}

修改代码,延迟请求发出时间,减少同一时间的并发量。

for(var i = 0; i < 50; i++) {
  	(function(index) {
		setTimeout(function () {
		  uploadFile(files[index]);
		}, 500 * index);
	})(i);
}

并发的一些知识点:

客户端对同一个主机域名的并发连接数量是有限的,当连接数量超过限制时,会导致其余请求就会被阻塞,另外脚本下载和运行也会被阻塞。

下面是浏览器并发连接数量表:来源(http://www.stevesouders.com/blog/2008/03/20/roundup-on-parallel-connections/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值