|
|
使用Ajax的挑戰 閱讀次數220
出處 不詳
與任何技術一樣,使用Ajax在相當多的方面都可能范錯誤。我在這兒討論的問題目前都缺少解決方案,并將會隨著Ajax的成熟而解決或提高。隨著開發Ajax應用經驗的不斷獲取,開發者社區中將會出現最好的實踐經驗與指導方針。
1、XMLHttpRequest的有效性
Ajax開發者面對的一個最大問題是當XMLHttpRequest不可用時如何反應。雖然大部分現代瀏覽器支持XMLHttpRequest,但還是有少量的用戶,他們的瀏覽器不能支持,或由于瀏覽器安全設置而阻止對XMLHttpRequest的使用。若你的Web應用發布于公司內部的Intranet上,你很可能可以指定支持哪種瀏覽器,并可以確保XMLHttpRequest是可用的。若你在公共WEB上發布,則你必須意識到由于假定XMLHttpRequest是可用的,所有就阻止了老瀏覽器、手持設備瀏覽器等等用戶來使用你的系統。
然而,你應該盡力保證應用系統“正常降級”使用,在系統中保留適用于不支持XMLHttpRequest的瀏覽器的功能。在購物車例子中,最好的方法是有一個Add to Cart按鈕,可以進行常規的提交處理,并刷新頁面來反映購物車狀態的變化。Ajax行衛可以在頁面被載入時通過JavaScript添加到頁面中,只在XMLHttpRequest可用的情況下,為每個Add to Cart按鈕加上JavaScript處理函數。另一個方法是在用戶登錄時檢測XMLHttpRequest,再決定是提供Ajax版本還是常規基于form提交的版本。
2、可用性考慮
圍繞著Ajax應用的大部分問題都是很普通的問題。例如,讓用戶知道他們的輸入已經被注冊并處理,是很重要的,因為在XMLHttpRequest處理過程中并不能提供通常的漏斗旋轉光標。一種方法是將“確認”按扭上的文本替換為“正在更新中…”,以避免用戶在等待響應時多次點擊按鈕。
另一個問題是,用戶可能沒有注意到他們正在觀看的頁面已經被更新。可以通過使用各種視覺技巧來將用戶的眼光吸引到頁面的更新區域。還有一個問題是通過Ajax更新頁面打斷了瀏覽器“退回前頁”按鈕的正常工作,地址欄中的URL不能反映頁面的全部狀態,并且不能使用書簽功能。參見Resource章節中列出的網站地址上的文章來了解更多Ajax應用關于可用性方面的問題。
3、服務器負載
使用Ajax界面代替傳統的基于form的界面可能戲劇性地增加傳遞到服務器的請求數量。例如,一個普通的Google搜索給服務器造成一次命中,并在用戶確認搜索表單時發生。然而,Google Suggest,將會試圖自動完成你的搜索詞,在用戶打字時將會往服務器發送多個請求。在開發一個Ajax應用時,要注意到你將會發送多少請求到用戶器端,以及服務器的負載指標。你可以通過在客戶端適當地緩存請求、與服務器響應來緩減負載壓力。你也應該在設計Ajax應用時盡量在客戶端處理更多的邏輯,而不用與服務器端通訊。
4、處理異步
一定要記住,沒有任何東西可以保證XMLHttpRequest將會按照它們被發送的順序來依次結束。實際上,你在設計系統時,腦子里應該始終假定它們不會按原來順序結束。在購物車例子中,使用了一個最后更新的時間戳來保證最新的數據不會被改寫。這個非常基本的方法可以在購物車場景中工作,但可能不能在其它情況下工作。在設計時刻就要考慮你該如何處理異步服務器響應。
結論
你現在應該對于Ajax的基本原則有了一個良好的了解,另外,你應該理解一些更高級的隨Ajax方法而來的設計問題。創建一個成功的Ajax應用需要一系列的方法—從JavaScript UI設計到服務器端架構—但是你現在應該已經具備了需要使用到的Ajax核心知識。 | |
posted on 2005-11-09 18:37
我的萬花@ 閱讀(124)
評論(0) 編輯 收藏 所屬分類:
技術文章柜子