那么我們得先知道什么是AJAX:
AJAX全稱為“Asynchronous JavaScript and XML”(異步JavaScript和XML)燕差,是一種創(chuàng)建交互式網(wǎng)頁應(yīng)用的網(wǎng)頁開發(fā)技術(shù)吃靠。
1):使用XMLHttpRequest對象與Web服務(wù)器進(jìn)行異步數(shù)據(jù)通信;
2):使用Javascript操作Document Object Model進(jìn)行動態(tài)數(shù)據(jù)顯示及交互湾宙;
3):使用JavaScript綁定和處理所有數(shù)據(jù)等凤跑。
AJAX 的優(yōu)點
1)頁面無刷新更新數(shù)據(jù):AJAX最大優(yōu)點就是能在不刷新整個頁面的前提下與服務(wù)器通信維護(hù)數(shù)據(jù)搀愧。這使得Web應(yīng)用程序更為迅捷地響應(yīng)用戶交互腮出,并避免了在網(wǎng)絡(luò)上發(fā)送那些沒有改變的信息,減少用戶等待時間蹦误,帶來非常好的用戶體驗劫拢。
2)異步與服務(wù)器通信:AJAX使用異步方式與服務(wù)器通信,不需要打斷用戶的操作强胰,具有更加迅速的響應(yīng)能力舱沧。優(yōu)化了Browser和Server之間的溝通,減少不必要的數(shù)據(jù)傳輸偶洋、時間及降低網(wǎng)絡(luò)上數(shù)據(jù)流量熟吏。
3)前端和后端負(fù)載平衡:AJAX可以把以前一些服務(wù)器負(fù)擔(dān)的工作轉(zhuǎn)嫁到客戶端,利用客戶端閑置的能力來處理玄窝,減輕服務(wù)器和帶寬的負(fù)擔(dān)分俯,節(jié)約空間和寬帶租用成本。并且減輕服務(wù)器的負(fù)擔(dān)哆料,AJAX的原則是“按需取數(shù)據(jù)”,可以最大程度的減少冗余請求和響應(yīng)對服務(wù)器造成的負(fù)擔(dān)吗铐,提升站點性能东亦。
4)基于標(biāo)準(zhǔn)被廣泛支持:AJAX基于標(biāo)準(zhǔn)化的并被廣泛支持的技術(shù),不需要下載瀏覽器插件或者小程序唬渗,但需要客戶允許JavaScript在瀏覽器上執(zhí)行典阵。隨著Ajax的成熟,一些簡化Ajax使用方法的程序庫也相繼問世镊逝。同樣壮啊,也出現(xiàn)了另一種輔助程序設(shè)計的技術(shù),為那些不支持JavaScript的用戶提供替代功能撑蒜。
5)界面與應(yīng)用分離:Ajax使WEB中的界面與應(yīng)用分離(也可以說是數(shù)據(jù)與呈現(xiàn)分離)歹啼,有利于分工合作、減少非技術(shù)人員對頁面的修改造成的WEB應(yīng)用程序錯誤座菠、提高效率狸眼、也更加適用于現(xiàn)在的發(fā)布系統(tǒng)。
AJAX 的缺點
1)AJAX 干掉了Back和History功能浴滴,即對瀏覽器機制的破壞:在動態(tài)更新頁面的情況下拓萌,用戶無法回到前一個頁面狀態(tài),因為瀏覽器僅能記憶歷史記錄中的靜態(tài)頁面升略。一個被完整讀入的頁面與一個已經(jīng)被動態(tài)修改過的頁面之間的差別非常微妙微王;用戶通常會希望單擊后退按鈕能夠取消他們的前一次操作屡限,但是在Ajax應(yīng)用程序中,這將無法實現(xiàn)的 炕倘,后退按鈕是一個標(biāo)準(zhǔn)的web站點的重要功能钧大,但是它沒法和js進(jìn)行很好的合作。這是Ajax所帶來的一個比較嚴(yán)重的問題激才,
** 2)AJAX的安全問題**:AJAX技術(shù)給用戶帶來很好的用戶體驗的同時也對IT企業(yè)帶來了新的安全威脅拓型,Ajax技術(shù)就如同對企業(yè)數(shù)據(jù)建立了一個直接通道。這使得開發(fā)者在不經(jīng)意間會暴露比以前更多的數(shù)據(jù)和服務(wù)器邏輯瘸恼。Ajax的邏輯可以對客戶端的安全掃描技術(shù)隱藏起來劣挫,允許黑客從遠(yuǎn)端服務(wù)器上建立新的攻擊。還有Ajax也難以避免一些已知的安全弱點东帅,諸如跨站點腳步攻擊压固、SQL注入攻擊和基于Credentials的安全漏洞等等
3)對搜索引擎支持較弱:對搜索引擎的支持比較弱。如果使用不當(dāng)靠闭,AJAX會增大網(wǎng)絡(luò)數(shù)據(jù)的流量帐我,從而降低整個系統(tǒng)的性能。
4)破壞程序的異常處理機制:至少從目前看來愧膀,像Ajax.dll拦键,Ajaxpro.dll這些Ajax框架是會破壞程序的異常機制的
5)違背URL和資源定位的初衷:我給你一個URL地址,如果采用了Ajax技術(shù)檩淋,也許你在該URL地址下面看到的和我在這個URL地址下看到的內(nèi)容是不同的芬为。這個和資源定位的初衷是相背離的
6)AJAX不能很好支持移動設(shè)備:一些手持設(shè)備(如手機、PDA等)現(xiàn)在還不能很好的支持Ajax
7)客戶端過肥蟀悦,太多客戶端代碼造成開發(fā)上的成本:編寫復(fù)雜媚朦、容易出錯 ;冗余代碼比較多(層層包含js文件是AJAX的通病日戈,再加上以往的很多服務(wù)端代碼現(xiàn)在放到了客戶端)询张;破壞了Web的原有標(biāo)準(zhǔn)。
8)如果用戶禁用了JS浙炼,網(wǎng)站就取不到數(shù)據(jù)
由此我們可以知道Ajax 適合用在 表單驅(qū)動的交互份氧,深層次的樹的導(dǎo)航,普通文本輸入提示和自動完成弯屈,對數(shù)據(jù)進(jìn)行過濾和操縱相關(guān)數(shù)據(jù)半火,快速的用戶與用戶間的交流響應(yīng)
不適合用在 搜索 ,基本的導(dǎo)航季俩,替換大量的文本钮糖,部分簡單的表單
原文鏈接:https://blog.csdn.net/qq_42471842/article/details/84713180