AJAX推送與拉取方式的比較
當(dāng)前位置:點(diǎn)晴教程→知識(shí)管理交流
→『 技術(shù)文檔交流 』
下面這些可以實(shí)現(xiàn)基于web的實(shí)時(shí)事件通知的方法.在他們的實(shí)驗(yàn)性研究中,作者們?cè)谝粋€(gè)利用comet推送方式實(shí)現(xiàn)(dojo的cometd庫(kù))的ajax應(yīng)用和一個(gè)純拉取方式的應(yīng)用之間,對(duì)數(shù)據(jù)一致性、服務(wù)器性能、網(wǎng)絡(luò)性能以及數(shù)據(jù)遺失進(jìn)行了比較。[br][br]使用ajax可以開發(fā)出基于瀏覽器的具有高用戶交互性和幾乎不易覺(jué)察到延遲的web應(yīng)用。實(shí)時(shí)的動(dòng)態(tài)數(shù)據(jù)比如新聞標(biāo)題、證券報(bào)價(jià)和拍賣行情都需要盡快地發(fā)送給用戶。然而,ajax仍然受限于web請(qǐng)求/響應(yīng)架構(gòu)的弱點(diǎn),使得服務(wù)器不能推送實(shí)時(shí)動(dòng)態(tài)的web數(shù)據(jù)。[br][br]1.http拉取方式:在這種傳統(tǒng)的方法中,客戶端以用戶可定義的時(shí)間間隔去檢查服務(wù)器上的最新數(shù)據(jù)。這種拉取方式的頻率要足夠高才能保證很高的數(shù)據(jù)精確度,但高頻率可能會(huì)導(dǎo)致多余的檢查,從而導(dǎo)致較高的網(wǎng)絡(luò)流量。而另一方面,低頻率則會(huì)導(dǎo)致錯(cuò)過(guò)更新的數(shù)據(jù)。理想地,拉取的時(shí)間間隔應(yīng)該等于服務(wù)器狀態(tài)改變的速度。[br][br]2.http流:這種方法由存在于不間斷的http連接響應(yīng)中或某個(gè)xmlhttprequest連接中的服務(wù)器數(shù)據(jù)流所組成。[br][br]3.反轉(zhuǎn)ajax:服務(wù)流應(yīng)用到ajax,就是所謂的反轉(zhuǎn)ajax 或者comet 。它使得服務(wù)器在某事件發(fā)生時(shí)可以發(fā)送消息給客戶端,而不需要客戶端顯式的請(qǐng)求。目標(biāo)在于達(dá)到狀態(tài)變化的實(shí)時(shí)更新。comet使用了http/1.1中的持續(xù)連接的特性。通過(guò)http/1.1,除非另作說(shuō)明,服務(wù)器和瀏覽器之間的tcp連接會(huì)一直保持連接狀態(tài),直到其中一方發(fā)送了一條明顯的“關(guān)閉連接”的消息,或者有超時(shí)以及網(wǎng)絡(luò)錯(cuò)誤發(fā)生。[br][br]4.長(zhǎng)時(shí)間輪詢:也就是所謂的異步輪詢,這種方式是純服務(wù)器端推送方式和客戶端拉取方式的混合。它是基于bayeux協(xié)議的。這個(gè)協(xié)議遵循基于主題的發(fā)布——訂閱機(jī)制。在訂閱了某個(gè)頻道后,客戶端和服務(wù)器間的連接會(huì)保持打開狀態(tài),并保持一段事先定義好的時(shí)間。如果服務(wù)器端沒(méi)有事件發(fā)生,而發(fā)生了超時(shí),服務(wù)器端就會(huì)請(qǐng)求客戶端進(jìn)行異步重新連接。如果有事件發(fā)生,服務(wù)器端會(huì)發(fā)送數(shù)據(jù)到客戶端,然后客戶端重新連接。
該文章在 2010/4/27 9:49:01 編輯過(guò) |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |