összevont ajax pool

                                                                                                                                                                                                                                                                                       


gyakran azért mondunk le a vastagabb kliens oldali technikáról nagy látogatottságú lapokon, hogy kiméljük a szervert. a teljes oldalak kiszolgálása egy felhasználó esetén normál módon böngészőből indítva legdurvább esetben böngésző sebességétől függően másodpercenként 2 kérés (ekkor érdemben nem látom a tartalmat, csak amint villan valami a képernyőn, már nyomom is a frissítést) ezzel szemben ajaxot intenzíven használó oldal esetén a másodpercenkénti 20 kérés sem ritka.

mit lehet tenni? lehetne akár kliens, akár szerver oldalon pool-t kialakitani és abból csak a korábbi 2/sec sebességgel kiszolgálni a kéréseket. az eredmény siralmas. az oldal szinte azonnal elveszti a varázsát, megjelennek az egyre hosszabb ideig tartó pörgettyűk, loader-ek.

lehetne például az azonos kéréseket csoportosítani, és a pool-ban egyszerre legfeljebb egyetlen azonos tipusú kérést tartani. ez olyan esetekben még némileg működhet is, amikor az eredmény nem befolyásolja a többi kérést. például egy activity feed esetén, nem lesz abból baj, ha a másodpercenkénti lekérésekből kimarad néhány. szakmájához értő fejlszető ezeket amúgyis akkor időzíti be, amikor az előző kérés megérkezett. viszont több különböző, össze nem vonható kérés még mindig gátolja egymást. mi tehát a megoldás?

a megoldás tök egyszerű. ami nem vonható össze, azokat össze kell vonni, és használjunk pool-t :)

kliens oldalon a kérések random időközönként esnek be, mondjuk viszonylag gyakran. válasszunk egy nem túl fájóan hosszú, de mégis elég hosszú időtartamot arra, hogy mekkora legyen az az időtartam amilyen gyakran a szervert megszólithatjuk. mondjuk fél másodperc. ezek után minden ajax kérést ezen a pool-on keresztül irányitsunk át. a következő, és egyben utolsó lépés kliens oldalon, hogy a különböző tipusú kérésekből készítsünk egy map-et a szerver számára, ahol a kulcs a kérés tipusa és/vagy eredeti ajax célurlje, az érték pedig egy olyan lista ami az elmúlt fél másodperc alatt beesett kérések listája. annyi még, hogy természetesen ha nem érkezett új kérés az időablak alatt akkor nem kell megszólítani a szervert csak úgy megszokásból.

ezen a ponton minden fejlesztőnek éreznie kell hogy mi a következő lépés, és azt is hogy ettől miért is fog fellélegezni az alkalmazásszerver.

igen a következő lépés a szerver oldali szétágazás funkció. a kapott map alapján a korábbi funkciókat sorra hívva egy válaszokat tartozó map-et kell létrehozni, majd kiszolgálni azt. és persze hogy van még teendő kliens oldalon. a válaszok tipusa alapján ott is szét kell ágazni, és a megfelelő korábbi callback-eket sorra hívogatni.

a technika neve legyen mondjuk összevont ajax pool, használjátok egészséggel.

és ne feledjétek, ma van a programozás ünnepe :)

sarkiroka 20131221191919 persze könnyü azt mondani, de lehetne elöre kigondolni az egészet, és már elöre összevonva csinálni a kéréseket, szinkronizálni azokat. ilyenkor egy nagy aha kiséretében meg szoktam kérdezni, hogy a tanácsot adó dolgozott-e már élö projecten? olyanon ami tervezéskor még csak 1-2 funkciót tartalmaz, majd apró cr-ek kiséretében bekerül a többi 18-19 is, és természetesen arra már nincs pénz, hogy az új igényeknek jobban eleget tevö módban refaktoráljuk a már meglévö kódok. jellemzöen azok szoktak ilyesmit mondani, akik több idöt töltenek el a tervezöasztal mellett mint valós ügyfélkódokkal, valós helyzetekben.
Kód újratöltése
 
                                                                                                                                                                                                                                                                                        megvan a véleményem, nincs egyedi nevem, mit tegyek?, használati útmutató nőkhöz, ne vedd el a fókuszt, alternatív csirkehúsleves, metaüzenet, miért hazudott?, érintőkábel, hogy hívnak?, te cigány vagy?, Ezek menthetetlenek, két hónap, programozós ünnepek, a rövidítésekről, a programozás törvényei, az időutazás és az időzónák kapcsolata, Téged ma mivel húztak le?, Itt vannak az új villamosok, Nincs értelme az örök életnek., sztárvendég beharangozó, mobilalkalmazás menekülteknek, az igazság, nincs nincs, buzik, félreérthetetlen bizonyíték a globális felmelegedésre, rutyóka, a gépek lázadása, máv hó zrt, társkeresős logikai feladvány, ezt én meguntam, a vízválogató, 0da81467f1fe8ed61b9c42725e362653 - 11111011111, ux, GYK, az esőkabát a szárazság ellen, pártatlanul, megbeszélések, 70, terpesz, a két legnagyobb piaci rés az offline üzenetkézbesítés terén, mennyire borzasztóan sok idő tellik el két péntek között?, novenber, rossz ötlet, a világról alkotott indokolatlanul hibás elméletek közül az egyik
« <  > »