我知道很多关于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更快地完成这项工作。任何帮助将不胜感激。
答案 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提供一个上下文而不是搜索整个文档。