為什么同一個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版本都做同樣的事情。調試和發布版本的行為也相同。
為什么同一個ASP.NET MVC操作的多個同時AJAX調用會導致瀏覽器阻塞?
繁花不似錦
2019-08-26 17:58:59