var Sayxmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
var Saycheckresult=null;
function UserSayOnlineList()
{
Sayxmlhttp.open("GET", "XXX.ASP", true);
Sayxmlhttp.onreadystatechange = SayListPage;
Sayxmlhttp.send();
}
function SayListPage() {
if (Sayxmlhttp.readyState == 4) {
if (Sayxmlhttp.status == 200) {
var Sayresponse = Sayxmlhttp.responseText;
if(Sayresponse==1){
Saycheckresult=1;
}
else{
document.getElementById('ShowHTML').innerHTML=Sayresponse;
}
}
Saycheckresult=0;
}
}
setInterval("UserSayOnlineList();",3000);
由于网页需要循环查询一个页面检查更新情况,所以设置了3000毫秒的定时刷新
但是,偶尔会出现IE假死的情况,原来使用Sayxmlhttp.open("Post","XXX.ASP",false)的时候,经常出现这样的情况,所以初步估计是由于AJAX的问题!
出现假死的时候我也ping了一下服务器,发现一般情况下,出现IE假死的时候就是服务器掉包的时候
那请问各位大大怎么样解决这样的问题呢???
---------------------------------------------------------------------------------------
还有就是当这个页面打开之后,长时间不对IE进行操作,突然再使用浏览器的时候发现CPU已经跑到了60~70%
我的电脑是酷睿双核的,所以一般电脑应该会更高,那是不是因为频繁刷新导致出现了CPU跑这么高呢???
应该怎么解决??
---------------------------------------------------------------------------------------
PS:在这些情况下,IE浏览器窗体还会出现另外一种比较诡异的情况,就是整个页面背景消失不见,或者说部分层的背景被消失不见或移位~~~!!
===================================================================================
setInterval在IE中较耗资源你找firefox看一下应该会没有问题,
建议用setTimeout,要好许多
====================================================================================
由于网页需要循环查询一个页面检查更新情况,所以设置了3000毫秒的定时刷新
这种自动刷新的,所消耗资源跟时间增长而增长的,时间一长,消耗的资源就非常多了。
====================================================================================
设置一个变量来保存服务器是否返回,第一次默认为true.
在每次检查更新之前先检查该变量是否为true,如果是true则设置该变量为false,并执行检查,返回后设置为true,这样可以直到服务器返回后再去检测,避免不停的去检测.
====================================================================================