2010-09-04 31 views
1

因此,我希望每隔10分鐘更新一次我的頁面上的某個區域。對於幾個用戶,每隔X分鐘同時更新AJAX內容

現在,我使用這個代碼:

var refresh = setInterval(refreshArea, 600000); 

但這種更新的客戶端,因此,如果100個不同的用戶正在查看的頁面,內容將在100周不同的時間進行更新。

我希望所有用戶每隔10分鐘更新一次內容,比如3:00,3點10分,3點20分等,這樣如果用戶在3點05分到達頁面,內容將在5分鐘後更新,然後每10分鐘更新一次。

我正在使用ASP.NET MVC,所以我確定有一些服務器代碼,我需要這樣做,但我不知道如何。

回答

3

您可以通過結合setTimeout and setInterval functions來實現此目的。

var timeout = <%= (10 - DateTime.Now.Minute % 10) * 1000 %>; 
setTimeout(function() { 
    refreshArea(); 
    setInterval(refreshArea, 60 * 10 * 1000); 
}, timeout); 

請注意,超時值是在服務器上計算的。

+0

+1的很好的回答 – Zafer 2010-09-04 22:56:38

+0

不錯,這將工作,謝謝。 – Steven 2010-09-05 04:05:06

+0

我還建議在服務器上使用一個很好的緩存方案,以最大限度地減少數據庫調用,從而使服務器的「羣呼」更輕 – 2010-09-05 18:50:38

0

你可以看看這個問題的某種彗星解決方案;儘管我對Microsoft堆棧不太熟悉,但Websync似乎正在做你正在尋找的東西。 (雖然它相當昂貴)。

或者,pokein提供了一個免費的替代品。

聲明:我從來沒有用過。 :)

+1

+1對於PokeIn。太好了! – BigbangO 2011-03-03 02:51:04