2010-07-23 4 views
2

이 원본은 나의 일원 컴퓨터에 많은 자원을 먹고있다. 나는 어떤 리소스도 먹지 않는 다른 인터벌 스크립트를 가지고있다. 나는 시간을 연장하려고 노력했지만 새로 고침이 늦어진다. 어떤 제안?큰 자원 먹는 사람

<script type="text/javascript"> 
$('document').ready(function(){ 
    updatestatus(); 
    scrollalert(); 
}); 
function updatestatus(){ 
    //Show number of loaded items 
    var totalItems=$('#scontent p').length; 
    $('#status').text('Done'); 
} 
function scrollalert(){ 
    var scrolltop=$('#scrollbox').attr('scrollTop'); 
    var scrollheight=$('#scrollbox').attr('scrollHeight'); 
    var windowheight=$('#scrollbox').attr('clientHeight'); 
    var scrolloffset=10; 
    if(scrolltop>=(scrollheight-(windowheight+scrolloffset))) 
    { 
    //fetch new items 
    $('#status').text('Loading more members...'); 
    $.get('allonline.php', '', function(newitems){ 
     $('#scontent').load('allonline.php'); 
     updatestatus(); 
    }); 
    } 
    setTimeout('scrollalert();', 60000); 
} 
</script> 

답변

5

'allonline.php'에서 가져온 것을 보지 않고, 나는 단지 추측하고 있습니다. 그러나 눈에 띄는 부분은 'allonline.php'를 요청하고 load() 'allonline.php'라는 콜백에 다시 $.get() 함수가 있다는 사실입니다. 동일한 데이터 덩어리를 두 번 요청했지만 한 번만 사용하는 것처럼 보입니다.

당신과 함께 ...

$.get('allonline.php', '', function(newitems){ 
    $('#scontent').load('allonline.php'); 
    updatestatus(); 
}); 

를 대체 할 수

$('#scontent').load('allonline.php', function() { updatestatus(); }); 

당신은 당신의 $.get() 콜백 newitems를 사용하지 않는, 그래서 나는이 일을한다고 생각합니다.

다른 확인 사항 : 응답

  1. 크기를 allonline.php에서 - 그것은 큰, 그리고 당신은 두 번을 요청하는 경우, 그것은 브라우저에게 DOM을 다시 렌더링하는 데 시간이 걸릴 수 있습니다;
  2. 브라우저가 사용중인 브라우저 ... IE7은 천천히, IE6은 SLOOOOWWWWWER입니다. 기계 고객의
  3. 클래스는, 내가 추측하고있어 반환되는 있는지 모르고, 다시

을 사용하고 있습니다. 그러나 allonline.php에 대한 이중 요청은 범인으로 보입니다.

이 정보가 도움이되기를 바랍니다. 행운을 빕니다!

+0

아마도 이것이 주요 문제 일 것입니다. 다른 것들 : 같은 요소에 대해 '$ (# foo')를 반복해서 호출하는 대신 어딘가에 캐시하십시오. 또한,'setTimeout' 호출은'setTimeout (scrollAlert, 6000);이어야합니다. – Pointy