1 回答

TA貢獻(xiàn)1877條經(jīng)驗 獲得超6個贊
傳統(tǒng)的 web 應(yīng)用允許用戶填寫表單(form), 當(dāng)提交表單時就向 web 服務(wù)器發(fā)送一個請求.服務(wù)器接收并處理傳來的表單,然后返回一個新的網(wǎng)頁.這個做法浪費了許多帶寬,因為在后兩個頁面中的大部分 HTML 代碼往往是相同的.由于每次應(yīng)用的交互都需要向服務(wù)器發(fā)送請求, 應(yīng)用的響應(yīng)時間就依賴于服務(wù)器的響應(yīng)時間. 這導(dǎo)致了用戶界面的響應(yīng)比本地應(yīng)用慢得多. 與此不同,AJAX 應(yīng)用可以僅向服務(wù)器發(fā)送并取回必需的數(shù)據(jù),它使用 SOAP 或其它一些基于 XML 的 web service 接口,并在客戶端采用 JavaScript 處理來自服務(wù)器的響應(yīng).因為在服務(wù)器和瀏覽器之間交換的數(shù)據(jù)大量減少, 結(jié)果我們就能看到響應(yīng)更快的應(yīng)用. 同時很多的處理工作可以在發(fā)出請求的客戶端機(jī)器上完成,所以 Web 服務(wù)器的處理時間也減少了. 使用 Ajax 的最大優(yōu)點,就是能在不更新整個頁面的前提下維護(hù)數(shù)據(jù).這使得 Web 應(yīng)用程序更為迅捷地回應(yīng)用戶動作,并避免了在網(wǎng)絡(luò)上發(fā)送那些沒有改變過的信息. Ajax 不需要
任何瀏覽器插件,但需要用戶允許 JavaScript 在瀏覽器上執(zhí)行.就像 DHTML 應(yīng)用程序那樣, Ajax 應(yīng)用程序必須在眾多不同的瀏覽器和平臺上經(jīng)過嚴(yán)格的測試. 隨著 Ajax 的成熟,一些簡化 Ajax 使用方法的程序庫也相繼問世.同樣,也出現(xiàn)了另一種輔助程序設(shè)計的技術(shù),為那些不支持 JavaScript 的用戶提供替代功能.對應(yīng)用 Ajax 最主要的批評就是,它可能破壞瀏覽器后退按鈕的正常行為.在動態(tài)更新頁面的情況下, 用戶無法回到前一個頁面狀態(tài), 這是因為瀏覽器僅能記下歷史記錄中的靜態(tài)頁面. 一個被完整讀入的頁面與一個已經(jīng)被動態(tài)修改過的頁面之間的差別非常微妙; 用戶通常都希望單擊后退按鈕,就能夠取消他們的前一次操作,但是在 Ajax 應(yīng)用程序中,卻無法這樣做.不過開發(fā)者已想出了種種辦法來解決這個問題,當(dāng)中大多數(shù)都是在用戶單擊后退按鈕訪問歷史記錄時,通過建立或使用一個隱藏的 IFRAME 來重現(xiàn)頁面上的變更 . ( 例如 , 當(dāng)用戶在 Google Maps 中單擊后退時 , 它在一個隱藏的 IFRAME 中進(jìn)行搜索,然后將搜索結(jié)果反映到 Ajax 元素上,以便將應(yīng)用程序狀態(tài)恢復(fù)到當(dāng)時的狀態(tài). ) 一個相關(guān)的觀點認(rèn)為,使用動態(tài)頁面更新使得用戶難于將某個特定的狀態(tài)保存到收藏夾中. 該問題的解決方案也已出現(xiàn), 大部分都使用 URL 片斷標(biāo)識符(通常被稱為錨點, URL 即中后面的部分)來保持跟蹤,允許用戶回到指定的某個應(yīng)用程序狀態(tài). (許多瀏覽器允許 JavaScript 動態(tài)更新錨點, 這使得 Ajax 應(yīng)用程序能夠在更新顯示內(nèi)容的同時更新錨點. 這些解決方案也同時解決了許多關(guān)于不支持后退按鈕的爭論. 進(jìn)行 Ajax 開發(fā)時,網(wǎng)絡(luò)延遲—即用戶發(fā)出請求到服務(wù)器發(fā)出響應(yīng)之間的間隔——需要慎重考慮.不給予用戶明確的回應(yīng),沒有恰當(dāng)?shù)念A(yù)讀數(shù)據(jù),或者對 XMLHttpRequest 的不恰當(dāng)處理,都會使用戶感到延遲,這是用戶不想,也是他們無法理解的. 通常的解決方案是, 使用一個可視化的組件來告訴用戶系統(tǒng)正在進(jìn)行后臺操作并且正在讀取數(shù)據(jù)和內(nèi)容. 一些手持設(shè)備(如手機(jī),PDA 等)現(xiàn)在還不能很好的支持 Ajax; 用 JavaScript 作的 Ajax 引擎,JavaScript 的兼容性和 DeBug 都是讓人頭痛的事; Ajax 的無刷新重載,由于頁面的變化沒有刷新重載那么明顯,所以容易給用戶帶來困擾―― 用戶不太清楚現(xiàn)在的數(shù)據(jù)是新的還是已經(jīng)更新過的;現(xiàn)有的解決有:在相關(guān)位置提示,數(shù)據(jù)更新的區(qū)域設(shè)計得比較明顯 , 數(shù)據(jù)更新后給用戶提示等 ; 對串流媒體的支持沒有 FLASH,JavaApple
- 1 回答
- 0 關(guān)注
- 1113 瀏覽
添加回答
舉報