2011-04-07 61 views
0

我在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

回答

0

此行爲將取決於您的Web服務器的配置。如果您只有一個線程分配給應用程序池,那麼該線程將服務於每個請求。

2

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