IT兄弟連 JavaWeb教程 AJAX定義以及解決的問題

Ajax是"Asynchronous JavaScript And XML"的縮寫(即:異步的JavaScript和XML),是一種實現無頁面刷新獲取服務器數據的混合技術,Ajax這個概念的最先提出者是Jesse James Garrett。咱們知道,互聯網最主要的功能在於"資源交換",當初發明互聯網的科學家們也是基於這個動機。雖然在互聯網中"資源交換"的主體都是計算機。但爲了方便交流,咱們一般將獲取資源的一方稱爲客戶端(主要的工具是瀏覽器),而將派發資源的一方稱爲服務端。程序員

在AJAX技術出現以前,若是瀏覽器須要從服務器請求資源,其交互模式爲"客戶端發出請求 -> 服務端接收請求並返回相應HTML文檔 -> 頁面刷新,客戶端加載新的HTML文檔"。確實,這種交互模式十分簡潔明瞭,並且很是符合人的直覺,對於那時遊走於互聯網中的極客而言,也確實夠用了。可是隨着時代的進步,互聯網漸漸不僅是極客們的娛樂場,愈來愈多商業化網站的出現,使互聯網再也不侷限於知足人們"資源交換"的需求,人們開始期待可以在互聯網中得到更好的"使用體驗",而隨着用戶點擊不斷刷新頁面的交互方式顯然很難討人喜歡。ajax

AJAX技術的問世,不只經過阻止瀏覽器接受響應時刷新頁面提高了互聯網用戶的使用體驗,還使開發者可以以更加微觀的視角從新思考互聯網應用的構建,今後,開發者將在"數據"層面而不是"資源"層面以更高的自由 度構建網站和Web應用。瀏覽器

有沒有辦法在頁面數據變更時,只向服務器請求新的數據,而且在阻止頁面刷新的狀況下,動態的替換頁面中展現的數據呢? -- 答案正是"AJAX"。服務器

再試想這樣一種情景,當用戶點擊頁面中的某個按鈕向服務器發送請求時,頁面本質上只是一些數據發生了變化,而此時服務器卻要將重繪的整個頁面再返回給瀏覽器加載,這顯然有悖於程序員的"DRY"原則,並且明明只是一些數據的變化卻迫使服務器要返回整個HTML文檔,這自己也會給網絡帶寬帶來沒必要要的開銷。網絡

經典Web應用程序模型的工做方式以下:異步

用戶界面中的大多數用戶操做都會將HTTP請求觸發返回Web服務器。服務器進行一些處理-檢索數據、處理數字、與傳統系統對話,而後向客戶端返回HTML頁面。這種方法具備不少技術意義,可是它並不能爲用戶帶來出色的體驗。雖然服務器正在作它應該作的事情,可是在服務器工做時用戶只能等待它完成。工具

6dbbc3d724cf451aba22518b50053d50.png

圖1  傳統Web應用與使用AJAX的Web應用網站

 

顯然,若是咱們從新設計Web應用程序,咱們就不會讓用戶等待。咱們經過在用戶和服務器之間引入中介(Ajax引擎),Ajax應用程序消除了Web上交互的啓動-中止-啓動-中止性質,瀏覽器不是加載網頁,而是在會話開始時加載一個Ajax引擎-用JavaScript編寫。該引擎負責呈現用戶看到的界面並表明用戶與服務器通訊。Ajax引擎容許用戶與應用程序的交互異步進行-與服務器的通訊無關。所以,用戶就不會在盯着空白的瀏覽器窗口和等待載入的圖標或者等待服務器處理結束了。設計

同步的過程只有容許有一個進程在執行,好比服務端在處理數據的時候,那麼客戶端不能進行任何操做,處於一個阻塞的一個狀態。3d

使用ajax的程序,服務端在處理數據的時候,客戶端瀏覽器依然能夠執行其餘的操做,並無阻塞狀態,也就是一個時間段內能夠有多個進程在執行。

66af218a6fb3466881a22a4358af58d4.png

圖2  傳統Web應用運行流程

 

5a83d22971a248bebb4683ba7b445f70.png

圖3  使用AJAX的Web應用運行流程

相關文章
相關標籤/搜索