Kliens oldalra vagy szerver oldalra?
ajax
Azóta rágódok azon, hogy Ajax alkalmazások esetén mit tegyek kliens és mit tegyek szerver oldalra amióta először kipróbáltam. Szerver oldalra ami a szerverre tartozik és kliens oldalra ami a kliensre tartozik! – ez egy szép “nesze semmi fogd meg jól” típusú tanács. Na jó, de akkor is kéne valami támpont. Arra gondoltam, hogy fogom és lemérem. Hát erre jutottam.
A méricskéhez szükséges fileok letölthetők innen.
Naszóval azt gondoltam, hogy fogok egy sima kis filet, amiben van egy link. Ha rákattintok a linkre akkor ez elindít 2 ajax lekérést. Az egyik a szerver oldali, a másik a kliens oldali piszmogásokat hivatott ellenőrizni. Mindkettőben egy 100 elemből álló unordered listet biggyesztünk a meglévő lapunkra.
Szerver oldali verzió
A szerver oldali verzióban a szerver oldalra van bízva minden, a kliens a szerver válaszát egy az egyben illeszti be az oldalunk megcélzott elemébe.
<?php
$eredmeny = $db->select('* WHERE tag=5 LIMIT 100');
for($i=0;$i<100;$i++){
print '<li id="li-'.$eredmeny[$i]['id'].'">'.$eredmeny[$i]['szoveg'].'</li>';
}
?>
Magyarul ez 100 darab li elemet ad vissza.
Kliens oldali verzió
Ebben a verzióban a szervertől csak azt az infót kérjük amit a kliens oldalról nem érhetönk el, vagyis az adatbázisból érkező adatok.
<?php
$eredmeny = $db->select('* WHERE tag=5 LIMIT 100');
for($i=0;$i<100;$i++){
print $eredmeny[$i]['id'] . '%' . $eredmeny[$i]['szoveg'];
if($i<99) print ',';
}
?>
A kliens verzióban a szervertől 100 darab id-t és szöveget kapunk vissza.
Tehát a szervertől a kétféle verziónál két különböző formában kapjuk meg a választ. A szerver oldaliban a szerver a teljes formázott html listát, amit csak be kell ilesztenünk a megcélzott elembe, a kliens oldaliban pedig csak az adatbázisból érkező id-ket és szövegeket kapjuk, és a kliens oldalra bízzuk a html lista összerakását és az így kapott listát szúrjuk be a megcélzott elembe.
A teszt programba betettem egy időmérőt, ami azt mérte, hoyg a szervertől a válasz megérkezése után mennyi ideig tart amig az alkalmazásunk beszúrja a listát és a DOM frissül.
A mért adatokat az alábbi táblázat mutatja:
| Böngésző | Szerver verzió | Kliens verzió |
| Firefox 2 | 403 | 231 |
| Internet explorer 6 | ? | ? |
| Opera 9 | 352 | 209 |
| Safari 2 | 346 | 186 |
| Camino 1 | 310 | 171 |
Az Internet Explorer képtelen volt megküzdeni az időmérési feladattal, szemlátomást picit lasabb volt mint a Firefox, de az időmérő adatai szerint 40-szer gyorsabb volt az összes többinél. Ha valaki esetleg megpiszkálná a letölthető filet, hogy az expóker is rendes időt adjon vissza akkor kérem írja meg a mérési adatait. Kíváncsi vagyok...
Konklúzió
Itt nem vettük figyelembe, hogy a szervertől kevesebb adat jön a kliens oldalon, de még így is elég sokatmondóak a számok. Aztán a teszt eredmények erősen függnek a lista elemszámától, illetve a hálózat sebességétől. Például localhoston a szerver verzió volt a gyorsabb, intraneten kb azonos eredményt produkáltak. Mindenesetre gondolatindítónak jó volt a méricske, de nem vezetett perdöntő eredményre. Sok kérdés van ami befolyásolja a döntést. Mekkora az adatforgalom? Mennyire gyorsak a kliensek? Mennyire terhelt a szerver? Stb, stb.
Ha esetleg valakinek van valami egzaktabb döntési módszere akkor JólMegMondja nekem és mindeki másnak. Szeretettel várjuk a hozzászólásokat, trackbackokat, mérési eredményeket és példákat.
Ez a bejegyzés rrd billentyűzetéből potyogott ki 2007 július 21. napján 12:24:07-kor. Eddig 1,697 olvasást ért meg. A visszajelzéseket nyomonkövetheted ezzel az RSS feed-el. Véleményt nyilváníthatsz, vagy trackbackolhatsz a saját oldaladon.
JólMegMondjad!
2 vélemény
-
Akron
2007 augusztus 1. 01:45:37Most éppen ez a legfrissebb cikk, ezert ide irok, bar az egesz site-ra reagalnek.
Hasznos az oldal, köszönet a keszítőjének
-
WebMánia » Ajax alkalmazások építése - lépésről lépésre
2007 november 6. 02:59:05[...] Kliens-szerver modell esetében mindig meg kell azt is határoznunk, hogy a feladatok mely részét helyezzük a szerver oldalra és melyeket a kliens oldalra. Erről itt. [...]



