【发布时间】:2011-02-01 14:05:39
【问题描述】:
我有一个“选项卡式”样式的网页,一旦页面加载,每个选项卡都会触发对其内容的 Ajax 请求(使用 jQuery)。后端是在 Visual Studio 中运行的 ASP.NET MVC,因此只需使用普通的“ASP.NET 开发服务器”为请求提供服务。我遇到以下问题:
1) 网络服务器一次处理一个请求。在第一个请求完成之前,不会处理第二个请求。这是以某种单线程模式运行的“ASP.NET 开发服务器”吗?我可以让它成为多线程的(我应该让它成为多线程的还是会打开一个痛苦的世界?)
2) 长时间运行的请求会杀死后续请求。 鉴于即使我一次触发所有 ajax 请求,请求也一次被处理,为什么有些请求会甚至无法到达网络服务器?一旦处理了长请求,就会发生这种情况。例如:
- 第一个请求(小请求)- 回复正常
- 第二次请求(大 request) - 响应需要一分钟或 所以但确实得到了服务。
- 第三次请求 (小请求)- 从不请求 到达服务器并且 jQuery 确实 不报错。
我尝试增加 ajax 超时但没有成功。
更新: 我在我的代码中发现了一个错误,它弄乱了最终请求的 URL,所以看起来这与请求长度和 ajax 超时无关(脸红!)。一路走来,虽然我发现了有用的 ajaxManager 插件,如果这是您需要的,它非常适合排队请求(http://www.protofunc.com/scripts/jquery/ajaxManager/)。另外,感谢有关使用 ASP.NET 开发服务器进行测试的有效观点。确实和IIS有很大的不同。
【问题讨论】:
-
附注。首先,不要在 Capistrano(Visual Studios 开发服务器)中对您的应用程序进行性能测试。它做了很多 IIS 在生产模式下不做的事情。其次,第一个请求比另一个请求花费更多时间,因为必须编译您的项目(IIS 也是如此)。
-
@alexn 我想那是卡西尼
-
@Omu 是的,需要更多咖啡 :)
标签: .net jquery asp.net-mvc ajax