1 回答

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