mvc母版页 ajax只加载 一次,为什么同一个ASP.NET MVC操作的多个同时AJAX调用会导致浏览器阻塞?...

为什么同一个ASP.NET MVC操作的多个同时AJAX调用会导致浏览器阻塞?

我在同一个控制器动作中同时发出六个jQuery async ajax请求。每个请求需要10秒才能返回。

通过调试和记录对action方法的请求,我注意到请求是序列化的,并且永远不会并行运行。即我在我的log4net日志中看到一个时间轴,如下所示:2010-12-13 13:25:06,633 [11164]信息 - 得到:11562010-12-13 13:25:16,634 [11164]信息 - 返回:11562010-12-13 13:25:16,770 [7124]信息 - 得到:14262010-12-13 13:25:26,772 [7124]信息 - 回归:14262010-12-13 13:25:26,925 [11164]信息 - 得到:1912年2010-12-13 13:25:36,926 [11164]信息 - 回归:1912年2010-12-13 13:25:37,096 [9812]信息 - 得到:1913年2010-12-13 13:25:47,098 [9812]信息 - 回归:1913年2010-12-13 13:25:47,283 [7124]信息 - 得到:20022010-12-13 13:25:57,285 [7124] INFO  - 返回:20022010-12-13 13:25:57,424 [11164]信息 - 得到:13082010-12-13 13:26:07,425 [11164] INFO  - 返回:1308

查看FireFox中的网络时间线,我看到了:

上面的日志示例和Firefox网络时间线都针对同一组请求。

来自同一页面的同一操作的请求是否已序列化?我知道Session在同一会话中对对象的序列化访问,但没有触及会话数据。

我将客户端代码剥离为单个请求(运行时间最长)但仍会阻止浏览器,即只有当ajax请求完成时,浏览器才会响应任何链接点击。

我在这里(在Chrome的开发人员工具中)观察到的是,在执行长时间运行的ajax请求时单击链接时,它会Failed to load resource立即报告错误,这表明浏览器已经杀死(或者正试图杀死并等待?)ajax请求:

但是,浏览器仍需要一个年龄才能重定向到新页面。

ajax请求是否真的是异步的,或者这很简单,因为javascript实际上是单线程的?

我的要求是否需要花费太长时间才能完成这项工作?

问题也出现在Firefox和IE中。

我还将脚本更改为$.ajax直接使用并明确设置async: true。

我在IIS7.5上运行它,Windows 2008R2和Windows 7版本都做同样的事情。

调试和发布版本的行为也相同。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值