AJAX推送方式與拉取方式的比較

來源:互聯網
上載者:User

使用Ajax可以開發出基於瀏覽器的具有高使用者互動性和幾乎不易覺察到延遲的web應用。即時的動態資料比如新聞標題、證券報價和拍賣行情都需要儘快地發送給使用者。然而,AJAX仍然受限於web請求/響應架構的弱點,使得伺服器不能推送即時動態web資料。

Delft科技大學的EnginBozdag、AliMesbah和ArievanDeursen一起討論了下面這些可以實現基於web的即時事件通知的方法:

1.HTTP拉取方式:在這種傳統的方法中,用戶端以使用者可定義的時間間隔去檢查伺服器上的最新資料。這種拉取方式的頻率要足夠高才能保證很高的資料精確度,但高頻率可能會導致多餘的檢查,從而導致較高的網路流量。而另一方面,低頻率則會導致錯過更新的資料。理想地,拉取的時間間隔應該等於伺服器狀態改變的速度。

2.HTTP流:這種方法由存在於不間斷的HTTP串連響應中或某個XMLHttpRequest串連中的伺服器資料流所組成。

3.反轉AJAX:服務流應用到AJAX,就是所謂的反轉AJAX或者COMET。它使得伺服器在某事件發生時可以發送訊息給用戶端,而不需要用戶端顯式的請求。目標在於達到狀態變化的即時更新。COMET使用了HTTP/1.1中的持續串連的特性。通過HTTP/1.1,除非另作說明,伺服器和瀏覽器之間的TCP串連會一直保持串連狀態,直到其中一方發送了一條明顯的“關閉串連”的訊息,或者有逾時以及網路錯誤發生。

4.長時間輪詢:也就是所謂的非同步輪詢,這種方式是純伺服器端推送方式和用戶端拉取方式的混合。它是基於BAYEUX協議的。這個協議遵循基於主題的發布——訂閱機制。在訂閱了某個頻道後,用戶端和伺服器間的串連會保持開啟狀態,並保持一段事先定義好的時間。如果伺服器端沒有事件發生,而發生了逾時,伺服器端就會請求用戶端進行非同步重新串連。如果有事件發生,伺服器端會發送資料到用戶端,然後用戶端重新串連。

在他們的實驗性研究中,作者們在一個利用COMET推送方式實現(Dojo的Cometd庫)的AJAX應用和一個純拉取方式的應用之間,對資料一致性、伺服器效能、網路效能以及資料遺失進行了比較。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.