天天看點

Ajax技術全解(2)

Ajax技術全解

之二

術語Ajax用來描述一組技術,它使浏覽器可以為使用者提供更為自然的浏覽體驗。在Ajax之前,Web站點強制使用者進入送出/等待/重新顯示範例,使用者的動作總是與伺服器的“思考時間”同步。Ajax提供與伺服器異步通信的能力,進而使使用者從請求/響應的循環中解脫出來。借助于Ajax,可以在使用者單擊按鈕時,使用JavaScript和DHTML立即更新UI,并向伺服器發出異步請求,以執行更新或查詢資料庫。當請求傳回時,就可以使用JavaScript和CSS來相應地更新UI,而不是重新整理整個頁面。最重要的是,使用者甚至不知道浏覽器正在與伺服器通信:Web站點看起來是即時響應的。

雖然Ajax所需的基礎架構已經出現了一段時間,但直到最近異步請求的真正威力才得到利用。能夠擁有一個響應極其靈敏的Web站點确實激動人心,因為它最終允許開發人員和設計人員使用标準的HTML/CSS/JavaScript堆棧建立“桌面風格的(desktop-like)”可用性。

與傳統的web應用比較

傳統的web應用允許使用者填寫表單(form),當送出表單時就向web伺服器發送一個請求。伺服器接收并處理傳來的表單,然後傳回一個新的網頁。這個做法浪費了許多帶寬,因為在前後兩個頁面中的大部分HTML代碼往往是相同的。由于每次應用的互動都需要向伺服器發送請求,應用的響應時間就依賴于伺服器的響應時間。這導緻了使用者界面的響應比本地應用慢得多。

與此不同,AJAX應用可以僅向伺服器發送并取回必需的資料,它使用SOAP或其它一些基于XML的web service接口,并在用戶端采用JavaScript處理來自伺服器的響應。因為在伺服器和浏覽器之間交換的資料大量減少,結果我們就能看到響應更快的應用。同時很多的處理工作可以在送出請求的用戶端機器上完成,是以Web伺服器的處理時間也減少了。

Ajax的工作原理

Ajax的核心是JavaScript對象XmlHttpRequest。該對象在Internet Explorer 5中首次引入,它是一種支援異步請求的技術。簡而言之,XmlHttpRequest使您可以使用JavaScript向伺服器提出請求并處理響應,而不阻塞使用者。

在建立Web站點時,在用戶端執行螢幕更新為使用者提供了很大的靈活性。下面是使用Ajax可以完成的功能:

  • 動态更新購物車的物品總數,無需使用者單擊Update并等待伺服器重新發送整個頁面。
  • 提升站點的性能,這是通過減少從伺服器下載下傳的資料量而實作的。例如,在Amaz
  • 消除了每次使用者輸入時的頁面重新整理。例如,在Ajax中,如果使用者在分頁清單上單擊Next,則伺服器資料隻重新整理清單而不是整個頁面。
  • 直接編輯表格資料,而不是要求使用者導航到新的頁面來編輯資料。對于Ajax,當使用者單擊Edit時,可以将靜态表格重新整理為内容可編輯的表格。使用者單擊Done之後,就可以發出一個Ajax請求來更新伺服器,并重新整理表格,使其包含靜态、隻讀的資料。

Ajax的優勢

1、減輕伺服器的負擔。因為Ajax的根本理念是“按需取資料”,是以最大可能在減少了備援請求和響影對伺服器造成的負擔;

2、無重新整理更新頁面,減少使用者實際和心理等待時間;

首先,“按需取資料”的模式減少了資料的實際讀取量,打個很形象的比方,如果說重載的方式是從一個終點回到原點再到另一個終點的話,那麼Ajax就是以一個終點為基點到達另一個終點;

Ajax技術全解(2)

圖5-1

Ajax技術全解(2)

圖5-2

其次,即使要讀取比較大的資料,也不用像RELOAD一樣出現白屏的情況,由于Ajax是用XMLHTTP發送請求得到服務端應答資料,在不重新載入整個頁面的情況下用Javascript操作DOM最終更新頁面的,是以在讀取資料的過程中,使用者所面對的也不是白屏,而是原來的頁面狀态(或者可以加一個LOADING的提示框讓使用者了解資料讀取的狀态),隻有當接收到全部資料後才更新相應部分的内容,而這種更新也是瞬間的,使用者幾乎感覺不到。總之使用者是很敏感的,他們能感覺到你對他們的體貼,雖然不太可能立竿見影的效果,但會在使用者的心中一點一滴的積累他們對網站的依賴。

3、更好的使用者體驗;

4、也可以把以前的一些伺服器負擔的工作轉嫁到用戶端,利于用戶端閑置的處理能力來處理,減輕伺服器和帶寬的負擔,節約空間和帶寬租用成本;

5、Ajax由于可以調用外部資料;

6、基于标準化的并被廣泛支援和技術,并且不需要插件或下載下傳小程式;

7、Ajax使WEB中的界面與應用分離(也可以說是資料與呈現分離);

8、對于使用者和ISP來說是雙盈的。

Ajax的問題

1、一些手持裝置(如手機、PDA等)現在還不能很好的支援Ajax;

2、用JavaScript作的Ajax引擎,JavaScript的相容性和DeBug都是讓人頭痛的事;

3、Ajax的無重新整理重載,由于頁面的變化沒有重新整理重載那麼明顯,是以容易給使用者帶來困擾――使用者不太清楚現在的資料是新的還是已經更新過的;現有的解決有:在相關位置提示、資料更新的區域設計得比較明顯、資料更新後給使用者提示等;

4、對流媒體的支援沒有FLASH、Java Applet好;

銘銘 收集

資料來源: Ajax技術開發應用

繼續閱讀