Kliens oldalra vagy szerver oldalra?

ajaxAzó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.

2 thoughts on “Kliens oldalra vagy szerver oldalra?

  1. Pingback: WebMánia » Ajax alkalmazások építése - lépésről lépésre

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöljük.