2010-07-23 51 views
2

此腳本在我的成員計算機上佔用了大量資源。我有其他的間隔腳本不會吃掉任何資源。我試圖延長時間,但這會減緩更新。有什麼建議麼?BIG Resource Eater

<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'帶回來的東西,我只是猜測。但突出的一個領域是,你有一個$.get()函數請求'allonline.php',並且在它的回調函數中你再次調用'allonline.php'。看起來好像你要求兩次相同的數據塊,但只使用一次。

可以更換

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

...有:

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

你不是在你的$.get()回調使用newitems,所以我覺得這個應該工作。

其他檢查事項:響應

  1. 大小從allonline.php - 如果它的大,你要求它兩次,它可能需要一個瀏覽器一段時間才能重新呈現DOM;
  2. 瀏覽器您的客戶正在使用... IE7是SLOW,IE6是SLOOOOWWWWWER;
  3. 類機器的客戶正在使用

同樣,不知道真實返回什麼,我猜測。但對allonline.php的雙重要求似乎是一個罪魁禍首。

我希望這會有所幫助。祝你好運!

+0

這可能是主要問題。其他的東西:不是一遍又一遍地調用'$(#foo')爲同一個元素,緩存在某處。另外,'setTimeout'調用應該是'setTimeout(scrollAlert,6000);' – Pointy 2010-07-23 12:54:39