Ajax请求由单个服务器线程提供?

问题描述:

我在http://www.iqp.vn做了一个简单的Ajax框架,我允许用户进行很多Ajax请求,或将其取消。Ajax请求由单个服务器线程提供?

但是从测试中我看到,当用户发出ajax请求来完成一些需要很长时间才能复制/写入大型文本文件的事情时,后续请求会一直等到第一个请求完成后再执行。在客户端上,我发现第二个请求虽然执行非常快速的处理,但在第一个“大”请求完成后总是返回。

我还使用隐藏表单(iframe)提交以允许用户以ajax样式上传文件,以及当用户上传大文件并取消请求(==重置客户端上的iframe),然后单击以生成另一个请求,我发现后面的请求总是等待第一个上传请求完成。

任何一个可以帮我这个请,我想用AJAX,以及(如果可能)与服务器上的多线程处理,我能得到客户一些非常不错的效果。

+0

请发表您的一些代码,以帮助一个回答.... – 2011-04-07 04:08:49

+0

我会公开我的代码后,一些重构后 – digitalhunter 2011-04-07 09:31:49

+0

也许当我发现这个问题,我的网络是太糟糕了,现在它工作正常。非常感谢您的帮助。 – digitalhunter 2011-04-08 01:46:57

此行为将取决于您的Web服务器的配置。如果您只有一个线程分配给应用程序池,那么该线程将服务于每个请求。

Ajax请求被当作正常的请求。你应该检查:

  • ajax调用是否在调用(客户端)之前等待另一个完成?
  • 你是否在服务器上实现了任何锁定机制?
  • 可能是在线程池中的所有线程都忙于其他请求

仅作参考,这个jQuery插件可以同时上传多个文件:http://aquantum-demo.appspot.com/file-upload

+0

我独立完成ajax调用,不等待客户端。服务器上没有锁,我的网站是新的,所以可能不会超载。我的上传代码(iframe&hidden form)与ajax form jquery插件类似。我认为每个Web请求都由一个新线程提供服务,因此上传请求无法阻止其他请求。 [链接上传](http://www.iqp.vn/#!mh=&mh_lh=Examples/LeftTree&mh_rh=Examples/UpdatePanel)如果你上传的文件在这里,然后立即点击红色的十字按钮终止它,然后单击在一个链接加载的东西,它会被上传请求阻止:( – digitalhunter 2011-04-07 09:23:32