DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> JavaScript入門知識 >> AJAX入門 >> AJAX詳解 >> AJAX推送方式與拉取方式的比較
AJAX推送方式與拉取方式的比較
編輯:AJAX詳解     
使用AJax可以開發出基於浏覽器的具有高用戶交互性和幾乎不易覺察到延遲的web應用。實時的動態數據比如新聞標題、證券報價和拍賣行情都需要盡快地發送給用戶。然而,AJax仍然受限於web請求/響應架構的弱點,使得服務器不能推送實時動態的web數據。

  Delft科技大學的Engin Bozdag、Ali Mesbah和ArIE van Deursen一起討論了下面這些可以實現基於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應用和一個純拉取方式的應用之間,對數據一致性、服務器性能、網絡性能以及數據遺失進行了比較。
XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved