2011-09-04 25 views
2

我使用這個代碼刷新一個div每5000毫秒:(和更新標題爲好)這個AJAX刷新腳本會超載我的服務器嗎?

<script type="text/javascript"> 
    function changeTitle() { 
    var title = $('.subjectContainer').html(); 
    document.title = title+' | WeeBuild Customer Support'; 
    } 
$(document).ready(function() { 
    $(".subjectContainer").load("subject.php?ticket=<?php echo $_GET[ticket]; ?>"); 
    var refreshId = setInterval(function() { 
     $(".subjectContainer").load("subject.php?ticket=<?php echo $_GET[ticket]; ?>"); 
     changeTitle(); 
    }, 5000); 
    $.ajaxSetup({ cache: false }); 
}); 
</script> 

正在加載的頁面文字只有一行是從數據庫中檢索。

在這裏看到:http://weebuild.heliohost.org/employee/subject.php?ticket=5156869

這是在加載頁面。當用戶更改故障單的主題時,我會使其保持更新狀態,以便每個查看故障單的用戶都不會刷新頁面。

但是,這會超載我所在的服務器嗎?

+0

不知道服務器的具體情況,無法回答。 – alex

+0

@alex哦,好的。 – Nathan

+0

那麼,請求數會超過服務器開始? – Nathan

回答

3

而不是不斷地輪詢你的服務器,這確實會引入大量的開銷,而不是長輪詢。從你的代碼看,你只是試圖更新幫助票的狀態 - 我認爲這不會每五秒發生一次。長時間輪詢基本上會將數據請求發送到服務器,然後可以在閒暇時進行響應。只有在實際改變的時候纔給予您更新的便利。而且也不會不斷地ping你的服務器。

+0

好主意,但如何讓主題更改後才更新?我可能會將其更改爲每5或10分鐘或更長時間。如果主題實際發生了變化,我只能使其更新,那將是一件好事。 – Nathan

+0

通過處理它服務器端。客戶發送更新主題的請求以及非常長的時間。服務器獲取請求並保存到它(在任何你想要的數據庫中)。然後,當主題實際更新時,最終將回復發送給您。如果響應在客戶端超時,只需重新提交。 – mrtsherman

+0

似乎很多工作哈哈。我只是每5分鐘就更換一次。你認爲這很好嗎?我相信這不會使服務器超載。 – Nathan

1

這取決於以下因素:

  1. 網站上的用戶同時
  2. 數據庫查詢時間
  3. 數據加載量

如果這些高相對於你的服務器容量。它會超載。

衡量產能的方法是基準測試。 (使用Apache基準ab或其他)

防止重載的方法是緩存。

+0

謝謝。我現在每5分鐘更新一次,我肯定不會造成過載。 – Nathan

相關問題