IE9上的Jquery Ajax调用非常慢,但在IE9中非常快

时间:2011-11-09 08:16:55

标签: jquery

我知道很多关于JS& amp; IE上的Jquery性能。然而,没有人帮助我,因此我不得不在这里提出这个问题。我对JS& amp; jQuery的。但是我遇到了问题。我的应用程序使用JS& Jquery大量渲染复杂的UI。该应用程序应该在IE(各种版本)上运行。该应用程序使用大量的ajax调用来获取数据并在UI上显示。数据通常很多DB行(1000s)...

问题是,ajax调用在IE9上运行正常但在IE8上运行速度非常慢。我找不到原因

以下是我调用ajax函数的方式

ajaxRequestSync("admin/dashboard/alertLog.action", reqData, "logtable", renderAlertText);

这是这个功能

function ajaxRequestSync(reqURL, reqData, id, completeFunction) {
alert(completeFunction);

$.ajax( {
    type : "POST",
    url : reqURL,
    data : reqData,
    dataType : "html",
    async : true,
    success : function(responseText) { 
        if(completeFunction == null) {
            renderText(id, responseText);
        }
        else {
            completeFunction(id, responseText);
        }
    },
    error : handleAjaxError
});
}

function renderText(id, msgText) {

if (id == "logtable") {
    var name = id+"Loading";
    hideDivById(name);
    showDivById(id);
}
//ask JQuery to clean text/html/events related to the contents of this node

cleanObject(id);
//ask JQuery to render HTML into this element
$("#" + id).html(msgText);
if(id == "alertdetail" && g_alertLinkStatus == true){
    unBlockSection(id);
    $(document).find('a.alert_link1').removeClass('alert_link1').addClass('alert_link');

}
}

请告诉我如何使用IE8更快地完成这项工作。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

正如评论中所讨论的那样,AJAX调用不是很慢,而是因为AJAX调用的结果很慢。

对于大型DOM操作,IE8将比IE9慢,但3分钟似乎有点过分(我已经在IE 6和7中看到过这样的时间)。

performance guide仍适用于IE 8,可能有所帮助。

如果以上情况没有帮助,我会先尝试确定哪个部分最慢。尝试注释$(document).find('a.alert_link1').removeClass('alert_link1').addClass('alert_link');并查看是否以显着的数量提高速度 - IE 8不支持getElementsByClassName,因此使用jQuery搜索类的元素对于大型文档将不是最优的

由于msgText是一个大的HTML字符串(1000行乘10列),您可能需要将其分解(或分页结果),即您的Web服务可以返回行数组,您可以添加所有这些立即或使用setInterval批量添加它们,希望不会阻止UI。如果你可以分解它,那么你可以在分解的部分上使用find('a.alert_link1'),这样可以提高速度,因为你可以为jQuery提供一个上下文而不是搜索整个文档。