今天專案測試發現的ajax請求阻塞

2021-06-16 15:30:55 字數 1246 閱讀 1311

後來查資料發現以下tips:

這次認真的測試了三種瀏覽器(ie/firefox/opera)的xmlhttp並發行為,發現如果使用者同時發出很多xmlhttp 非同步請求,那麼瀏覽器不是一股腦全把請求發出去,而是存在乙個最大併發數。我的機器測試發現,ie和ff裡面是2,opera是4。

所以說,在設計乙個站點時,讓ajax頁面同時載入數十個xmlhttp請求不是明智的做法。在考慮減少介面耦合的同時,也應該斟酌速度問題。實際上,可以使用某些細化的設計,可以把多種請求繫結到一起傳送,從而達到優化的目的。

ajax是以非同步的方式向伺服器提交需求,這就會存在多個ajax請求同時提交,或者迭代提交的情況,這將導致資源競爭(racing),設計較好的情況下,可以通過disable提交按鈕的緩解此類問題,但一旦出現迭代提交request的情況,就可能出現xmlhttprequest物件的引用被覆蓋,但具體會發生什麼樣的情況,取決於ajax的編碼。

ajax在非同步的情況下,併發數並非沒有限制,wininet 會限制每個伺服器的連線數,限制它對單個 http 伺服器的同時連線的數量。

如果超過此限制時,請求將阻止,直到完成當前的連線之一。

這是設計使然,是與 http 規範和行業標準。例如ie8併發數就限制在2,firefox 21限制在6。當然ie的限制可以在登錄檔中修改,hkey_local_machine\software\  microsoft\internet explorer\main\featurecontrol\feature_maxconnectionsperserver。

42超出上述限制,超出的請求將會被瀏覽器阻塞,直到先前的請求已經完成才會啟動。在這裡建立使用佇列來解決這些問題。基本思路,生成xhr物件之後,檢測當前併發數量是否大於最大請求的上限,若大於上限,則將xhr物件壓入佇列之中,否則就可以直接傳送,並且可以繼續增加併發請求數量。請求完成的時候,進行響應處理,並在結束之時進行併發數量減一操作,接著就可以檢測佇列中是否有等待請求,若有等待請求,就傳送給隊首的xhr物件進行請求。

外包專案測試中的專案管理

整個專案實施過程中,專案管理是乙個最重要的活動。測試專案的管理與研發專案管理具有很多相同的地方,但是也有很多的不同點,所以研發專案管理的經驗不一定在測試專案中使用。測試專案經理可以參考公司的專案管理規範來進行專案管理,下面列出測試專案管理上的一些需要注意的地方。1 外包測試專案為服務性質的工作,工作...

基於Spring的專案測試要點

今天覆習了一下 造福無數人spring2.0 參考手冊翻譯 第8章 測試,濃縮即精華的更新了ss wiki中的 spring下的單元測試要點。1.需要spring 依賴注入的測試protected string getconfiglocations 並顯式寫一些需要注入的變數的setter函式。2....

軟體專案測試流程的幾個階段

軟體專案的測試流程大只包含的幾個階段 立項 需求評審 用例評審 測試執行 測試報告文件。立項後測試需要拿到的文件 1 需求說明書 2 原型圖 及ui圖 3 介面文件 4 資料庫字典 表的數量 快取機制 需求評審 參加人員 開發 測試及需求人員,由需求人員主持講解。為了會議的有效舉行,軟體測試 及開發...