Az Ajax (Asynchronous JavaScript and XML) interaktív webalkalmazások
létrehozására szolgáló webfejlesztési technika. A weblap kis mennyiségű
adatot cserél a szerverrel a háttérben, így a lapot nem kell
újratölteni minden egyes alkalommal, amikor a felhasználó módosít
valamit. Ez növeli a honlap interaktivitását, sebességét és
használhatóságát.
Az Ajax a következő technikák kombinációja:
XHTML (vagy HTML) és CSS a tartalom leírására és formázására.
DOM kliens oldali script nyelvekkel kezelve a dinamikus megjelenítés és a
már megjelenített információ együttműködésének kialakítására.
XMLHttpRequest objektum az adatok aszinkron kezelésére a kliens és a webszerver
között. Néhány Ajax keretrendszer esetén és bizonyos helyzetekben
IFrame-et használnak XMLHttpRequest objektum helyett.
XML formátumot használnak legtöbbször az adattovábbításra a kliens és a
szerver között, bár más formátumok is megfelelnek a célnak, mint a
formázott HTML vagy a sima szöveg.
Mint a DHTML, a LAMP vagy az SPA, az Ajax sem egy technológia önmagában, hanem egy kifejezés közösen használt technológiákra.
A
kifejezést először Jesse James Garrett használta 2005. februári
cikkében, melynek címe Ajax: A New Approach to Web Applications. Garett
a zuhany alatt gondolkodott a fogalmon, amikor rájött, hogy egy rövid
kifejezésre van szükség, amin keresztül be tudja mutatni az ajánlott
technológiákat egy megrendelőnek. Későbbi előadásokon Garett
kijelentette, hogy az Ajax nem betűszó.
Bár
az Ajax kifejezés 2005-ben született meg, az ajax megszületését
lehetővé tevő technológia egy évtizeddel előtte jött létre a Microsoft
Remote Scripting kezdeményezése kapcsán. A tartalom aszinkron
betöltésének lehetősége, azaz egy már megnyitott oldal tartalmának
frissítése az oldal újratöltése nélkül, ellenben már az IFRAME
elemtípus (1996, Internet Explorer 3) és a LAYER elemtípus (1997
Netscape 4) idejére vezethető vissza. Mindkét elemtípusnak van egy src
attribútuma, ami bármely létező URL-t képes fogadni. Egy JavaScriptet
tartalmazó lap betöltésével, ami manipulálja a szülő lapot, ajax-szerű
hatások érhetőek el.
A Microsoft
Remote Scripting kezdeményezése egy elegánsabb megoldást nyújtott a
problémára. Egy Java applet kérte le az adatokat, amivel a kliens oldal
JavaScripten keresztül tudott kommunikálni. Ez a megoldás az Internet
Explorer 4 és a Netscape Navigator 4 esetében volt használható. Később
a Microsoft létrehozta az XMLHttpRequest objektumot az Internet
Explorer 5-ben, és ezt a lehetőséget először az Outlook Web Access
használta ki a Microsoft Exchange Server 2000 verzióban.
A
Microsoft böngészőjének aszinkron képességeit kihasználva a General
Interface 2001-ben kiadta a JavaScript alkalmazás keretrendszerét. Ez
olyan megjelenítést, felhasználói élményt és teljesítményt biztosított
a honlapoknak, ami eddig csak az asztali alkalmazások esetén volt
elérhető. Támogatta a HTTP-alapú adatszolgáltatásokat is, követve az
egyre dominánsabbá váló utat az XML és a XML Webszolgáltatások felé.
A
webfejlesztő közösségek, eleinte a microsoft.public.scripting.remote
hírcsoport majd később a bloggerek, gyorsan kifejlesztettek több
technikát a különböző böngészőktől független, konzisztens eredmény
biztosítására. 2002-ben a közösség kérésére létrehozták a Microsoft
Remote Scriptinget, ami lecserélte a Java appletet az XMLHttpRequestre.
Mivel
az XMLHttpRequestet ma már a legtöbb fontosabb böngésző támogatja, az
alternatív technikákat már ritkábban használják. Elsősorban ott
alkalmazzák őket, ahol a széleskörű kompatibilitás, a kis méret,
illetve több oldal hozzáférése fontos.
Felhasználói felület A legnyilvánvalóbb ok az Ajax használatára a felhasználói élmény
fokozása. Az Ajax-ot használó oldalak viselkedése sokkal inkább
hasonlít a desktop-os alkalmazásokhoz, mint a tipikus weboldalakhoz.
Amikor egy linkre kattintás hatására a teljes weboldal újratöltődik, az
sokszor időigényes művelet. Az Ajax-ot használó oldalak e helyett
képesek rá, hogy csak az oldal szükséges részét frissítsék, így
gyorsabb reagálást biztosítanak a felhasználói interakciókra. Néhányan
úgy gondolják, hogy az Ajax lesz az a feltörekvő technológia, amelynek
segítségével a jövőben a webes alkalmazások minden eddiginél
interaktívabbá és így széles körben is sokkal népszerűbbé válhatnak.
Letöltési sebesség és szerverterhelés Mivel az Ajax-ot használó oldalak a szervertől az adatokat HTML
formázás nélkül kapják, ezért ez által a szerver terhelése és így a
válaszideje is csökken. A kisebb mennyiségű adat pedig gyorsabban jut
el a hálózaton a szervertől a kliensig. Tehát az Ajax-szal
nagymértékben csökkenthető a szerver terhelése és növelhető az oldalak
letöltési sebessége. A szervertől kapott adatokból a HTML kód a
böngészőben jön létre javascript segítségével, ami jól optimalizált
programkód esetén legtöbbször gyorsabb - de legalább is nem lassabb -
mintha az erősen leterhelt szerver hozná azt létre. Ennek oka, hogy ma
már a kliens oldalon a felhasználók viszonylag gyors személyi
számítógépekkel rendelkeznek, amelyek terhelése általában lényegesen
alacsonyabb, mint a szerveré. Ráadásul, ha valamelyik kliens gép a
lassúsága vagy leterheltsége miatt mégis lassabban hozza létre a HTML
kódot, az nem érinti a párhuzamosan jelenlévő többi klienst, ami annál
nagyobb előny minél nagyobb a párhuzamosan jelenlevő kliensek száma.
(Ha a HTML kód a szerveren generálódik, akkor ez pont fordítva van:
annál jobban lassul az oldalgenerálás, minél több klienstől érkezik
kérés egyszerre.) Tehát minél nagyobb egy oldal látogatottsága annál
nagyobb előnyt jelent a kliens oldali HTML generálás. Mindezen jótékony
hatásokat tovább erősíti, hogy az Ajax segítségével sokszor jól
megvalósítható, hogy mindig csak az éppen szükséges minimális
mennyiségű adat töltődjön le a szerverről (ld. "load on demand"
technika). Jó példa erre, amikor egy nagyméretű sokszintű menünél
először csak a főkategóriák töltődnek le, majd egy adott főmenüre
kattintva csak ennek az egy főmenünek az almenüi. Ennek köszönhetően
mindig csak a feltétlen szükséges minimális mennyiségű adattal kell
dolgozni. Összefoglalva az Ajax és az itt leírt módszerek együttes
használatával szignifikáns oldal letöltési sebesség növekedés és
szerverterhelés csökkentés érhető el. A gyorsulás általában egyenes
arányban áll a webes alkalmazás funkcionális összetettségével és
alkalmazáslogikájának bonyolultságával.
A tartalom a funkció és a forma elkülönítése Egy másik előnye az Ajax használatának, hogy lehetővé teszi az adatokat
szolgáltató- és az adatok megjelenítését végző programkód teljes
elkülönítését. Bár erre az Ajax használata nélkül is léteznek
megoldások. Az Ajax segítségével történő elkülönítés legkézenfekvőbb
formái az alábbiak. Elkülönülnek a nyers adatok és tartalmak - amelyek
általában XML vagy hasonló stuktúrába vannak ágyazva - amelyek egy
szerver oldali adatbázisból származnak.