为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

繁花不似锦 2019-08-26 17:58:59
为什么同一个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版本都做同样的事情。调试和发布版本的行为也相同。
查看完整描述

2 回答

  • 2 回答
  • 0 关注
  • 1122 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信