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.
Most é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 🙂
Pingback:WebMánia » Ajax alkalmazások építése - lépésről lépésre