2010-01-08 36 views
0

是否有人知道在Web服務器上檢查更新的一些好策略?通過網頁檢查更新有什麼好策略?

我想了很久的Facebook首頁和stackoverflow在這裏查看問題的線。但是,我需要加載新的數據,而無需重新加載整個頁面。

目前,我認爲有一個JavaScript「計時器」工作的頁面生存期,如果有任何新的數據已輸入輪詢web服務器。我們的目標範圍是〜2000個瀏覽器同時進行此操作,所以我真的不希望對舊數據和新數據進行全面的平等檢查。

我正在使用ASP.Net,所以我認爲實現這一目標的一個好方法是在會話變量中存儲「最後一個數據衝突時間」變量,然後更新該時間,如果新數據已輸入客戶應該收到。這聽起來對你是否可行?

我不知道我自己的解釋完全在這裏,所以請詢問您可能在評論任何問題,我會更新這個問題:)

在此先感謝

回答

2

我對.Net不熟悉,但我可以告訴你我將如何使用Java Servlets解決它。 .Net中的解決方案應該類似。

我會創建一個Servlet作爲REST資源的一個URL和一個lastModified方法,根據內容狀態(和當前用戶)來回答。客戶端將使用HTTP HEAD輪詢資源的當前狀態。只有在上次請求後修改,客戶端纔會發送GET請求。如果服務器知道資源至少會保持未修改多久,他可以發送一個過期標題。然後客戶將在到期時間後開始投票。

+0

這是一個非常整潔的想法。 「虐待」HTTP :)我會研究這個.. – cwap 2010-01-08 19:15:51

+0

很酷的想法我喜歡它 – RHicke 2010-01-08 19:24:45

1

你可以用」使用推送界面更新您的網頁。所以你將不得不拉。只需用Ajax打開服務器並檢查更新。


可以讓你沒有做你每次查找新的數據時,一個全尺寸的平等檢查某處緩存此信息。您需要在服務器某處存儲最後一次更新時間,如果這比客戶端更新,您將知道有新數據要加載

1

輪詢服務器並使用AJAX更新一些內容可能是最常見的解決方案,但實際上您可以使用推送來更新您的網頁。這當然更具有異國情調,但是您可以使用Silverlight的雙工通信將內容推送到頁面。

Tomasz Janczuk開發了一個stand-alone javascript library,它將處理Silverlight功能的客戶端。

他甚至有一篇文章討論了網絡農場的擴大影響 - http:// tomasz.janczuk.org/2009/09/scale-out-of-silverlight-http-polling.html(刪除空間 - 我的新手地位阻止我在答案中多次鏈接)。他做了一些很棒的工作,可以幫助你爲你的內容設置一個很好的推送模式。