我面临与在IE中运行ajax相关的性能问题(我使用的是Ie8),问题是我的网站运行速度非常慢,但它在chrome中运行良好,我的意思是使用SLOW =>慢动作 。我使用div和表并使用javascript将html渲染为div,除此之外我使用ajax调用5个不同的页面(处理程序)
function ReceiveServerData(rValue)
{
var x = GetHash();
var feeds = JSON.parse(rValue);
var sb = new StringBuilderEx();
var length = feeds.length;
for(var i=0; i<length-1; i++)
sb.append(News(feeds[i].Id, feeds[i].Title, feeds[i].Des, feeds[i].Icon, i));
if(i == 0)
{
$('#News').html("");
$('#head').html("<i><b><center>لا يوجد اي مقالات حاليا</center></b></i>");
return;
}
$('#News').html(sb.toString());
$('#Pages').html("");
if(feeds[i].count == 1)
{
$('#head').html("");
return;
}
for(var a = 1; a <= feeds[i].count; a++)
{
if('#'+a == x || a == x)
$('#Pages').append("<button id=b" + a + " class='bt2' type='button'><span class='yt-uix-button-content'>"+ a +" </span></button> ");
else
$('#Pages').append("<button id =" + a + " Onclick=javascript:ChangeHash(" + a + ") class='bt' type='button'>"+ a +"</button> ");
$('#head').html("<i><b><center>The page has been loaded.</center></b></i>");
}
scroll(0,0);
}
function News(id, title, des, icon, i)
{
var type = "";
if(i == 0)
type = "&p=big";
return "<table style=width:100%;>" +
"<tr><td rowspan=2 style=width:10%;><img width=70 hieght=70 src="+ icon +">" +
"</td><td align=right style=width:90%;background:url(./Images/BabrBackground.gif)>" +
" <font size=3><a href=Read.aspx?id="+ id +"> "+ title +"</a></font></td></tr><tr>"+
"<td valign=top align=right> <i><font color=#5C5858>"+ des +"</font></i></td></tr></table>";
}
答案 0 :(得分:1)
IE的javascript引擎往往比Chrome运行速度慢,而且从它的外观看,你的循环可能使它比它想象的更难工作。 不知道你的项目或你想要完成的任何事情,为什么你不只是在服务器上渲染你的html并将其发回给客户端,而不是让所有的javascript为你构建html?
答案 1 :(得分:0)
我没有直接回答你的问题。但是您可以使用dynaTrace精确定位导致问题的确切代码行。有关详情,请访问http://ejohn.org/blog/deep-tracing-of-internet-explorer/
答案 2 :(得分:0)
我会考虑优化html生成 - 你检查过jTemplates吗?
我目前使用jTemplates从ajax返回的JSON数据创建内容,该数据被插入到页面上的div中 - 尽管生成了大量的html内容,但我对性能没有任何问题 - 我很怀疑因为jTemplates是高度优化的。