Ajax如何改進(jìn)Web頁(yè)面?
通過(guò)使用Ajax,頁(yè)面和應(yīng)用只向服務(wù)器請(qǐng)求它們真正需要的東西,也就是頁(yè)面中需要修改的部分,而且這也是服務(wù)器要提供的部分。這意味著通信量更小,更新更少,用戶等待頁(yè)面刷新的時(shí)間也更短。
利用Ajax,瀏覽器只會(huì)發(fā)送和接收頁(yè)面中需要修改的部分。
有時(shí)瀏覽器根本不必與服務(wù)器通信。
Ajax到底是什么?
Ajax采用一種心得方式使用原先已經(jīng)存在的一些技術(shù)。
Ajax并不是一個(gè)全新的技術(shù),不像Css或JavaScript那樣要求從頭學(xué)起;它也不是一組需要借助Photoshop才能完成的圖形技術(shù),Ajax只是采用一種新的方式來(lái)考慮如何使用你可能已經(jīng)知道的一些技術(shù)來(lái)完成你已經(jīng)在做的事情。
怎樣才能讓頁(yè)面“Ajax”呢?
Ajax是設(shè)計(jì)和構(gòu)建web頁(yè)面的一種方法,可以使web應(yīng)用焗油像桌面應(yīng)用一樣的交互性和響應(yīng)性。對(duì)你來(lái)說(shuō)這意味著什么呢?你可以盡可能在客戶的瀏覽器上完成處理。你的頁(yè)面會(huì)發(fā)出異步請(qǐng)求,使用戶可以繼續(xù)工作面不是等待響應(yīng)。另外只會(huì)更新頁(yè)面上確實(shí)改變的部分。最棒的是,Ajax頁(yè)面是使用標(biāo)準(zhǔn)Internet技術(shù)構(gòu)建的,有些技術(shù)你可能早已知道該如何使用,例如:
*XHTML
*層疊樣式表
*JavaScript
Ajax應(yīng)用還使用了另外一些技術(shù),盡管這些技術(shù)已經(jīng)出現(xiàn)了一段時(shí)間,但對(duì)你來(lái)說(shuō)可能還比較陌生,例如:
*XMLHttpRequest
*Xml&Json
*DOM
ps:
異步請(qǐng)求是指在后臺(tái)發(fā)生的一個(gè)請(qǐng)求。
? ? ? ?處理請(qǐng)求時(shí)用戶可以繼續(xù)完成他的工作。
AJAX的優(yōu)缺點(diǎn)
優(yōu)點(diǎn)
1.AJAX使用JavaScript技術(shù)向服務(wù)器發(fā)送異步請(qǐng)求;
2.AJAX無(wú)需刷新整個(gè)頁(yè)面;
3.因?yàn)榉?wù)器響應(yīng)內(nèi)容不再是整個(gè)頁(yè)面,而是頁(yè)面的局部,所以AJAX性能高;
缺點(diǎn)
1.AJAX并不適合所有場(chǎng)景,很多時(shí)候還是使用同步交互;
2.AJAX雖然提高了用戶體驗(yàn),但無(wú)形中向服務(wù)器發(fā)送的請(qǐng)求次數(shù)增多了,導(dǎo)致服務(wù)器壓力增加;
3.因?yàn)锳JAX是在瀏覽器中使用JavaScript技術(shù)完成的,所以還需要處理瀏覽器兼容性問(wèn)題;
Question & Answer
Q:Ajax是不是就代表“Asynchronous JavaScript and XML”(異步JavaScript和XML)?
A:差不多吧,但不完全是,因?yàn)楹芏啾徽J(rèn)為是“Ajax”的頁(yè)面并沒(méi)有使用JavaScript或XML,所以可以把Ajax定義為一種構(gòu)建Web頁(yè)面的方法,使之像桌面應(yīng)用一樣焗油響應(yīng)性和交互性,這種說(shuō)法更合適,而不要過(guò)分考慮所涉及的具體技術(shù)。
Q:“異步”到底是什么意思?
A:在Ajax中,可以向服務(wù)器發(fā)出請(qǐng)求而無(wú)需用戶等待響應(yīng)。這就稱(chēng)為一個(gè)異步請(qǐng)求,這正是Ajax的核心所在。
Q:難道不是所有web頁(yè)面都是異步的嗎?比如瀏覽器不就是在我查找的同事加載圖像嗎?
A:瀏覽器確實(shí)是異步的,不過(guò)標(biāo)準(zhǔn)Web頁(yè)面卻不是。通常,Web頁(yè)面需要從一個(gè)服務(wù)器端程序得到某些信息時(shí),一切都會(huì)停滯不動(dòng),直到服務(wù)器響應(yīng)為止……除非頁(yè)面做出一個(gè)異步請(qǐng)求。這正是Ajax的關(guān)鍵。