[英]Garbage collection takes a very long time in Internet Explorer after building a large table with ng-repeat AngularJS
[英]XMLHttpRequest takes very long only in Internet Explorer
我們最近發現了一個問題,當從Internet Explorer導航到網站上的通用頁面時,出現消息“此網頁由於長時間運行的腳本而沒有響應”,因此該網頁暫時凍結。
經過調查,我發現它是由AJAX XMLHttpRequest引起的,該過程需要30-45秒才能完成。 通常,當這樣的AJAX調用存在性能問題時,長時間的等待時間就是在等待服務器響應的過程中。 但是在這里,創建請求並發送請求的等待時間很長:
請注意,此請求在Google Chrome瀏覽器中完全沒有問題,只需要200毫秒:
這些結果在每次刷新頁面時都是一致的。 還要注意,這既不是很大的請求,也不是很大的響應。 請求主體實際上是空的:
並且響應非常小:
我認為由於問題似乎是在客戶端,所以腳本必須要解決一些問題,但是我們對所有AJAX調用都使用相同的泛型函數,而其他任何問題都沒有此問題:
JSONRequest: function (url, type, data, success, error) {
var customError = function (er) {
console.log(er);
}
if (error !== 'undefined' && error != null)
customError = error;
$.ajax({
url: url,
type: type,
cache: false,
data: JSON.stringify(data),
contentType: 'application/json; charset=utf-8',
success: success,
error: customError
});
},
我在這里很困惑。 這僅僅是“避免IE”問題,還是我想念的東西? 30秒鍾來創建一個小的請求並發送它似乎很荒謬,尤其是在Chrome中速度很快的情況下。 是什么賦予了?
*請注意,我正在使用IE 11進行測試。
由於某種原因,導致取消選中其中的所有復選框的JQuery行導致了該問題:
$('.list-check-buttons.check-button.only-button input:checkbox').prop('checked', false)
我通過逐步調試Chrome調試器來驗證了這一點,並且刪除了該行,大部分情況下解決了該問題。 (事實證明,我們不需要這條線,因為在另一個地方也處理了相同的邏輯,這很奇怪,不會引起性能問題。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.