ajax的優(yōu)點(diǎn)
? Ajax的給我們帶來的好處大家基本上都深有體會(huì)牺弹,在這里我只簡(jiǎn)單的講幾點(diǎn):
? ?1、最大的一點(diǎn)是頁面無刷新迅栅,在頁面內(nèi)與服務(wù)器通信殊校,給用戶的體驗(yàn)非常好。
2读存、使用異步方式與服務(wù)器通信箩艺,不需要打斷用戶的操作,具有更加迅速的響應(yīng)能力宪萄。
3、可以把以前一些服務(wù)器負(fù)擔(dān)的工作轉(zhuǎn)嫁到客戶端榨惰,利用客戶端閑置的能力來處理拜英,減輕服務(wù)器和帶寬的負(fù)擔(dān),節(jié)約空間和寬帶租用成本琅催。并且減輕服務(wù)器的負(fù)擔(dān)居凶,ajax的原則是“按需取數(shù)據(jù)”,可以最大程度的減少冗余請(qǐng)求藤抡,和響應(yīng)對(duì)服務(wù)器造成的負(fù)擔(dān)侠碧。
? ?4、基于標(biāo)準(zhǔn)化的并被廣泛支持的技術(shù)缠黍,不需要下載插件或者小程序弄兜。
ajax的缺點(diǎn)
下面所闡述的ajax的缺陷都是它先天所產(chǎn)生的。
? 1瓷式、ajax干掉了back按鈕替饿,即對(duì)瀏覽器后退機(jī)制的破壞。后退按鈕是一個(gè)標(biāo)準(zhǔn)的web站點(diǎn)的重要功能贸典,但是它沒法和js進(jìn)行很好的合作视卢。這是ajax所帶來的一個(gè)比較嚴(yán)重的問題,因?yàn)橛脩敉窍M軌蛲ㄟ^后退來取消前一次操作的廊驼。那么對(duì)于這個(gè)問題有沒有辦法据过?答案是肯定的,用過Gmail的知道妒挎,Gmail下面采用的ajax技術(shù)解決了這個(gè)問題绳锅,在Gmail下面是可以后退的走芋,但是歹撒,它也并不能改變ajax的機(jī)制,它只是采用的一個(gè)比較笨但是有效的辦法秋柄,即用戶單擊后退按鈕訪問歷史記錄時(shí),通過創(chuàng)建或使用一個(gè)隱藏的IFRAME來重現(xiàn)頁面上的變更积蜻。(例如闯割,當(dāng)用戶在Google Maps中單擊后退時(shí),它在一個(gè)隱藏的IFRAME中進(jìn)行搜索竿拆,然后將搜索結(jié)果反映到Ajax元素上宙拉,以便將應(yīng)用程序狀態(tài)恢復(fù)到當(dāng)時(shí)的狀態(tài)。)
但是丙笋,雖然說這個(gè)問題是可以解決的谢澈,但是它所帶來的開發(fā)成本是非常高的,和ajax框架所要求的快速開發(fā)是相背離的御板。這是ajax所帶來的一個(gè)非常嚴(yán)重的問題锥忿。
? ? 2、安全問題
技術(shù)同時(shí)也對(duì)IT企業(yè)帶來了新的安全威脅怠肋,ajax技術(shù)就如同對(duì)企業(yè)數(shù)據(jù)建立了一個(gè)直接通道敬鬓。這使得開發(fā)者在不經(jīng)意間會(huì)暴露比以前更多的數(shù)據(jù)和服務(wù)器邏輯。ajax的邏輯可以對(duì)客戶端的安全掃描技術(shù)隱藏起來笙各,允許黑客從遠(yuǎn)端服務(wù)器上建立新的攻擊钉答。還有ajax也難以避免一些已知的安全弱點(diǎn),諸如跨站點(diǎn)腳步攻擊杈抢、SQL注入攻擊和基于credentials的安全漏洞等数尿。
? ? 3、對(duì)搜索引擎的支持比較弱惶楼。
? ? 4右蹦、破壞了程序的異常機(jī)制。至少從目前看來歼捐,像ajax.dll嫩实,ajaxpro.dll這些ajax框架是會(huì)破壞程序的異常機(jī)制的。關(guān)于這個(gè)問題窥岩,我曾經(jīng)在開發(fā)過程中遇到過甲献,但是查了一下網(wǎng)上幾乎沒有相關(guān)的介紹。后來我自己做了一次試驗(yàn)颂翼,分別采用ajax和傳統(tǒng)的form提交的模式來刪除一條數(shù)據(jù)……給我們的調(diào)試帶來了很大的困難晃洒。
? ? 5、另外朦乏,像其他方面的一些問題球及,比如說違背了url和資源定位的初衷。例如呻疹,我給你一個(gè)url地址吃引,如果采用了ajax技術(shù),也許你在該url地址下面看到的和我在這個(gè)url地址下看到的內(nèi)容是不同的。這個(gè)和資源定位的初衷是相背離的镊尺。
? ? 6朦佩、一些手持設(shè)備(如手機(jī)、PDA等)現(xiàn)在還不能很好的支持ajax庐氮,比如說我們?cè)谑謾C(jī)的瀏覽器上打開采用ajax技術(shù)的網(wǎng)站時(shí)语稠,它目前是不支持的,當(dāng)然弄砍,這個(gè)問題和我們沒太多關(guān)系仙畦。