CMS rendszer statikus oldalakkal


Már többször, több formában szembejött a probléma, hogy ha valaki akar egy site-ot, feldob egy PHP/MySQL CMS-t, ami nagyon kényelmes első körben, de aztán amikor elkezd nőni a forgalom, kezdenek egyre jobban kijönni a rendszer korlátai. A MySQL nem bírja a terhelést, a PHP nagyon izzasztja a gépet. Persze, lehet alá erősebb gépet tenni, szét lehet szórni több gépre, így végül is a végtelenségig lehet skálázni egy ilyen rendszert, csakhogy egy sima hírportálra teljesen feleslegesnek tűnik többgépes szerverpark, hisz tulajdonképpen statikus tartalom kiszolgálásáról van szó.

A probléma oka szerintem mélyen a rendszerek architektúrájában keresendő. A WordPress, a Drupal, a Joomla, és a többi CMS rendszer is úgy működik, hogy minden egyes kérésénél összeszedi az adatokat a MySQL-ből, és újra meg újra legenerálja az oldalt. Ez tök kényelmes, mert a generálási folyamatba ide-oda be lehet illeszteni dolgokat (ezt csinálják a pluginek), így igény szerint bővíthető és alakítható a rendszer. Ugyanakkor ez a folyamatos újragenerálás az oka annak, hogy a végén aztán a világ összes számítási kapacitása sem elég az oldalnak, pedig valójában az idő 99%-ban feleslegesen dolgozik a gép a PHP futtatással, és a MySQL kérések kiszolgálásával.

Azon gondolkodtam, hogy kellene készíteni egy olyan CMS rendszert, aminek kezdetektől fogva az a filozófiája, hogy statikus oldalakat generál, amiket minimális erőforrás felhasználásával kiszolgálhat a szerver, illetve akár kliens oldalon cache-elhető is, és akkor csak NotModified header-ek mászkálnak az esetek nagy részében. A dinamikus adatok meg simán js-el lennének megoldva. Tehát pl. egy notification box a bejelentkezett usernek. De ezeknek az ajax komponenseknek az adatforrása is sok esetben lehetne statikus json. Tehát pl. ennél a notification jelzőnél minden usernek fixen le lehetne generálni egy json-t, amit csak akkor kell újragenerálni, ha új üzenet jön.

+Robert Cartman -el beszéltünk nemrég ilyesmiről, ebből jött az ötlet.

#blog