摘要:即同步請(qǐng)求,瀏覽器需要等待服務(wù)器處理請(qǐng)求,導(dǎo)致了瀏覽器端的阻塞。這使得應(yīng)用程序更為迅捷地回應(yīng)用戶動(dòng)作,并避免了在網(wǎng)絡(luò)上發(fā)送那些沒(méi)有改變的信息。引擎在客戶端運(yùn)行,承擔(dān)了一部分本來(lái)由服務(wù)器承擔(dān)的工作,從而減少了大用戶量下的服務(wù)器負(fù)載。
前言
博主博客:Stillwater的博客
知乎專欄:前端汪汪
本文為作者原創(chuàng)轉(zhuǎn)載請(qǐng)注明出處:
http://hiztx.top/2017/01/11/a...
一、什么是AJAX?AJAX即“Asynchronous JavaScript and XML”(異步的JavaScript與XML技術(shù)),指的是一套綜合了多項(xiàng)技術(shù)的瀏覽器端網(wǎng)頁(yè)開(kāi)發(fā)技術(shù)。是一種用來(lái)創(chuàng)建交互式網(wǎng)頁(yè)應(yīng)用的網(wǎng)頁(yè)開(kāi)發(fā)技術(shù)。之所以說(shuō)AJAX是一項(xiàng)綜合技術(shù),是因?yàn)锳JAX包含了以下技術(shù):
基于HTML和CSS進(jìn)行表示;
使用 DOM進(jìn)行動(dòng)態(tài)顯示及交互;
使用 XML 和 JSON 進(jìn)行數(shù)據(jù)交換及相關(guān)操作;
使用 XMLHttpRequest 進(jìn)行異步數(shù)據(jù)查詢、檢索;
使用 JavaScript 將所有的東西綁定在一起。
注:asynchronous 異步的
英 [e??s??kr?n?s] 美 [e"s??kr?n?s]
傳統(tǒng)的Web應(yīng)用提交表單時(shí)會(huì)向網(wǎng)頁(yè)服務(wù)器發(fā)送一個(gè)請(qǐng)求。服務(wù)器接收并處理傳來(lái)的表單,然后送回一個(gè)新的網(wǎng)頁(yè)。但這個(gè)做法浪費(fèi)了許多帶寬,因?yàn)樵谇昂髢蓚€(gè)頁(yè)面中的大部分HTML碼往往是相同的。
由于每次應(yīng)用的溝通都需要向服務(wù)器發(fā)送請(qǐng)求,應(yīng)用的回應(yīng)時(shí)間依賴于服務(wù)器的回應(yīng)時(shí)間。這導(dǎo)致了用戶界面的回應(yīng)比本機(jī)應(yīng)用慢得多。即同步請(qǐng)求,瀏覽器需要等待服務(wù)器處理請(qǐng)求,導(dǎo)致了瀏覽器端的阻塞。
AJAX的出現(xiàn)解決的問(wèn)題AJAX應(yīng)用可以僅向服務(wù)器發(fā)送并取回必須的數(shù)據(jù),并在客戶端采用JavaScript處理來(lái)自服務(wù)器的回應(yīng)。因?yàn)樵诜?wù)器和瀏覽器之間交換的數(shù)據(jù)大量減少(大約只有原來(lái)的5%),服務(wù)器回應(yīng)更快了。局部刷新。
AJAX采用異步模式,通過(guò)XMLHttpRequest對(duì)象(下篇博客具體介紹),發(fā)送給服務(wù)器請(qǐng)求以后,不用等待服務(wù)器的處理結(jié)果,用戶可以繼續(xù)進(jìn)行操作。非阻塞的方式提升了用戶體驗(yàn)。
總的來(lái)說(shuō)就好像,瀏覽器大哥有一書(shū)包的好東西,但是他只想給服務(wù)器大哥其中一個(gè)好東西。傳統(tǒng)Web應(yīng)用處理方法是,瀏覽器大哥直接把書(shū)包給服務(wù)器大哥,他等服務(wù)器大哥自己找完以后,才能拿回自己的書(shū)包,繼續(xù)干別的事情。AJAX的處理方法是,瀏覽器大哥找了個(gè)叫XMLHttpRequest的小弟來(lái)做這件事。小弟先從書(shū)包里找出來(lái)那個(gè)東西,然后再給服務(wù)器大哥。服務(wù)器拿到東西以后處理了一下再把東西還給XMLHttpRequest小弟。這期間瀏覽器大哥愛(ài)干嘛干嘛。
三、AJAX的優(yōu)缺點(diǎn) 優(yōu)點(diǎn):能在不更新整個(gè)頁(yè)面的前提下維護(hù)數(shù)據(jù)。這使得Web應(yīng)用程序更為迅捷地回應(yīng)用戶動(dòng)作,并避免了在網(wǎng)絡(luò)上發(fā)送那些沒(méi)有改變的信息。
通過(guò)異步模式,不阻塞用戶,從而提升了用戶體驗(yàn)。
AJAX不需要任何瀏覽器插件,但需要用戶允許JavaScript在瀏覽器上執(zhí)行。
AJAX引擎在客戶端運(yùn)行,承擔(dān)了一部分本來(lái)由服務(wù)器承擔(dān)的工作,從而減少了大用戶量下的服務(wù)器負(fù)載。
缺點(diǎn):破壞瀏覽器的后退與加入收藏書(shū)簽功能。在用AJAX動(dòng)態(tài)更新頁(yè)面的情況下,用戶無(wú)法回到前一個(gè)頁(yè)面狀態(tài),這是因?yàn)闉g覽器僅能記下歷史記錄中的靜態(tài)頁(yè)面。
AJAX如果使用GET方法,會(huì)暴露了與服務(wù)器交互的細(xì)節(jié)。
對(duì)搜索引擎的支持比較弱。通過(guò)AJAX動(dòng)態(tài)更新的頁(yè)面可能無(wú)法被搜索引擎搜到。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/81177.html
摘要:前言這里筑夢(mèng)師是一名正在努力學(xué)習(xí)的開(kāi)發(fā)工程師目前致力于全棧方向的學(xué)習(xí)希望可以和大家一起交流技術(shù)共同進(jìn)步用簡(jiǎn)書(shū)記錄下自己的學(xué)習(xí)歷程個(gè)人學(xué)習(xí)方法分享本文目錄更新說(shuō)明目錄學(xué)習(xí)方法學(xué)習(xí)態(tài)度全棧開(kāi)發(fā)學(xué)習(xí)路線很長(zhǎng)知識(shí)拓展很長(zhǎng)在這里收取很多人的建議以后決 前言 這里筑夢(mèng)師,是一名正在努力學(xué)習(xí)的iOS開(kāi)發(fā)工程師,目前致力于全棧方向的學(xué)習(xí),希望可以和大家一起交流技術(shù),共同進(jìn)步,用簡(jiǎn)書(shū)記錄下自己的學(xué)習(xí)歷程...
摘要:前言這里筑夢(mèng)師是一名正在努力學(xué)習(xí)的開(kāi)發(fā)工程師目前致力于全棧方向的學(xué)習(xí)希望可以和大家一起交流技術(shù)共同進(jìn)步用簡(jiǎn)書(shū)記錄下自己的學(xué)習(xí)歷程個(gè)人學(xué)習(xí)方法分享本文目錄更新說(shuō)明目錄學(xué)習(xí)方法學(xué)習(xí)態(tài)度全棧開(kāi)發(fā)學(xué)習(xí)路線很長(zhǎng)知識(shí)拓展很長(zhǎng)在這里收取很多人的建議以后決 前言 這里筑夢(mèng)師,是一名正在努力學(xué)習(xí)的iOS開(kāi)發(fā)工程師,目前致力于全棧方向的學(xué)習(xí),希望可以和大家一起交流技術(shù),共同進(jìn)步,用簡(jiǎn)書(shū)記錄下自己的學(xué)習(xí)歷程...
摘要:前端面試總結(jié)先說(shuō)背景,本人年月畢業(yè),去年十月校招到今年月一直在做前端開(kāi)發(fā)工作,年前打算換工作,就重新梳理下面試考點(diǎn)總結(jié)包含基礎(chǔ),基礎(chǔ),常見(jiàn)算法和數(shù)據(jù)結(jié)構(gòu),框架,計(jì)算機(jī)網(wǎng)絡(luò)相關(guān)知識(shí),可能有的點(diǎn)很細(xì),有的點(diǎn)很大,參考個(gè)人情況進(jìn)行總結(jié),方便對(duì)知識(shí) 前端面試總結(jié) 先說(shuō)背景,本人2018年7月畢業(yè),去年十月校招到今年10月一直在做前端開(kāi)發(fā)工作,年前打算換工作,就重新梳理下面試考點(diǎn)總結(jié)包含: ...
閱讀 1226·2023-04-25 15:53
閱讀 2101·2021-11-19 09:40
閱讀 3488·2021-10-11 10:59
閱讀 2066·2019-08-30 15:55
閱讀 1955·2019-08-30 15:54
閱讀 2293·2019-08-29 13:03
閱讀 2754·2019-08-28 18:17
閱讀 1510·2019-08-27 10:51