2012-11-30 45 views
0

我現在正在重新加載(如果你更喜歡那個單詞,更新)每5分鐘我的頁面,但這對我來說是相當長的時間。我不知道用下面的代碼重新加載頁面會影響服務器,只是我想知道;如果我將間隔時間從5分鐘更改爲1秒,這對服務器有多大影響?它會降低服務器的速度嗎?我的網站每半小時有5個訪問者,但更新後會更多。

$(document).ready(function() { 


    setInterval(function() { 
     $('#loading-page').show().html('<img src="images/animation-loading.gif" alt="" title="Reloading the page">'); 

     $.ajax({ 
      url: 'get/statistics', 
      type: 'GET', 

      success: function(s) { 
       $("#load-statistics").html(s); 
      }, 


      error: function() { 
       $('#loading-page').show().html('<img src="images/exclamation-red.png" alt="" title="Couldn't reload page. Trying again soon">'); 
      } 
     }); 
    }, 300e3); 


}); 

在此先感謝。

+0

5位訪客不算什麼......如果你的服務器/代碼無法處理,你會遇到更大的問題。 – sevenseacat

+0

也許你可以實現基於MVVM的解決方案 – Mate

回答

2

你可以自己測試一下。試試這個:

var start = new Date().getTime(); 

$.ajax({ 
    url: 'get/statistics', 
    type: 'GET', 

    success: function(s) { 

     var end = new Date().getTime(); 
     console.log('milliseconds passed', end - start); 

     $("#load-statistics").html(s); 
    } 

});​ 

檢查控制檯的處理時間。然後,您可以根據平均值來更改間隔時間,例如,您可以在控制檯獲得10-20個採樣時間。

+0

謝謝:)前3或5次重新加載是在6毫秒以下,但在此之後它變得越來越慢:/我會繼續測試它與更活躍的人 – Erik

+0

似乎像頁面內容/數據在每次重新加載後都會增加... –

+0

是的。它似乎這樣做 – Erik

2

一個簡單的答案是「5分鐘= 300秒。」,所以降低了間隔爲1秒將加載服務器300X倍。

這將是比少一點,因爲可能有一些瀏覽器的限制和網絡延誤等等,但無論如何可觀。考慮用戶和他們產生的流量。

1秒只是過於極端,它幾乎沒有必要。你可能會假裝它(如某些計數器)來創建動態效果。

1

這將很可能取決於什麼發生服務器端。你不能和開發服務器端服務的開發人員交談嗎? 它也將取決於有多少個併發瀏覽器將調用此服務。 許多服務旨在同時回答數百萬次,但通常可以撥打多少個電話,以及多久寫入服務文檔。

我覺得,一個經驗性的做法可能是你的方式,改變了幾秒鐘或幾分鐘的頻率數,accordly服務器響應時間和服務器負載(如果你可以測量)。 您也可以測量從調用開始到接收到響應以來JavaScript花費的時間。

1

對於這個數字,即每半小時5個訪問者,我懷疑在處理頁面更新的服務器中應該沒有任何'困難',假設每個更新不是一個瘋狂密集型的長操作,陷入服務器。還有各種緩存或緩存機制,可以通過僅獲取已更改的資源而不是重新生成不變的資源來進一步提高性能。當負載增加時,即每x週期有更多用戶,那麼您可以投資調整您的應用程序和/或服務器。用監測工具進行檢查可能是一個開始。

1

這將高度依賴於您的頁面執行的操作。

另外,如上所述1秒可能太過於極端,特別是對於統計類型的頁面,同時5分鐘可能太慢無用,當然這取決於您網站的內容/性質。

你的服務器的負載將取決於請求頻率以及併發用戶數。

這裏我想指出的是,在這種情況下,您可以使用服務器端「緩存」來顯着降低服務器負載。從您的頁面名稱來看,統計信息是服務器緩存的理想選擇。因爲它們不必是100%準確的,並且一旦生成,就可以適用於接下來的兩分鐘(例如)左右。

所以如果你緩存你的統計響應,所有後續的請求將被賦予chached內容,從而減少服務器上的負載。而正確的基礎設施請求甚至可能無法訪問您的服務器(例如:某些網絡交換機可以緩存並返回內容)。

根據您的服務器端技術,您將不得不尋找適當的緩存機制。