Home > A weboldal építése > Optimalizáció > A weboldal gyorsítása

A weboldal gyorsítása

Napjainkban a legnépszerűbb weboldalak, mint például a Facebook vagy a Twitter a weboldal gyorsítását használják a gördülékeny működéshez. A számos felhasználótól érkezett nagy mennyiségű igény feldolgozása speciális beállításokat igényel. Az említett weboldalak közös tulajdonsága, hogy gyorsítótárat (cache) használnak, az adatokat adatbázisokból nyerik, így könnyebben megbirkóznak a terheléssel.

Az ilyen terjedelmű weboldalak a RAM-on keresztüli cache-elést használnak, mely meglehetősen gyors és sok kérést képes feldolgozni. A legnépszerűbb gyorsításhoz használt technológiák közé a Varnish és Memcache tartozik, de ezek nem teljesen tökéletesek az osztott tárhelyen való használathoz. A fenn említett weboldalakon teljes ellenőrzés alatt tartják a futó alkalmazásokat, ezzel szemben az osztott tárhelyen több ezer különböző alkalmazás fut.

A már említett Varnish és Memcache eszközöket ezért úgy kellett módosítani, hogy osztott tárhelyen is hasznukat vehessük. A változtatások főleg a felhasználók megosztását, egyes parancsok letiltását és a vituális hostok adatbázisával való kapcsolatot érintik. A weboldal gyorsabb betöltése érdekében PHP gyorsítót is használhat.

A gyorsításhoz használt eszközök pozitív hatással vannak a tárhely megbízhatóságára is, mivel a varnish és a memcache szerver nagy mennyiségű kérést is rövid időn képes feldolgozni. A weboldal gyorsasága a cache-elés következtében akkor is stabil, ha a szerver egyébként túlterhetlés miatt lassú.


Memcache


A memcache egy megosztott cache memória ill. key = value adatbázis. Az adatbázisba az értékek mentése egy kulcs alapján történik, a későbbi rákeresés szintén a kulcs alapján valósul meg, ami egyszerű és gyors keresét eredményez. Mivel a memcache az adatbázis eredményeinek mentésén alapszik, a dinamikus weboldalaknál (CMS rendszereknél, vagy e-shopokoknál) használva a leghatékonyabb. Az adatbázisban legfeljebb 1 MB-s adat mentése engedélyezett. A memcache megtalálható webes alkalmazások legtöbbjében.

A memcache a localhost:11211 szerveren taláható.

Az általunk módosított memcache könyvtár a felhasználó azonosítójával prefixelt kulcs alapján működik. Az azonosítók értékét a .htaccess fájlban lehet változtatni ezzel azt biztosítva, hogy az azonos CMS rendszerek használata esetén elkerüljük az ütközéseket.

A .htaccess fájlban a következő kulcsok használata lehetséges:

  • memcache.prefix_host_key 1 - a kulcs elé írja be a Host előtagot
  • memcache.prefix_host_key_remove_subdomain 0 - eltávolítsa az aldomaint (az adatok meg vannak osztva az aldomainek között)
  • memcache.prefix_host_key_remove_www 1 - eltávolítsa a www. előtagot
  • memcache.prefix_static_key no value - statikus előtag 

A  memcahe segítségével való programozáshoz http://php.net/manual/en/book.memcache.php linken taláható egy útmutató. Ha az adatbázisban gyakran használt adatok szerepelnek, elmentheti őket a memcache-be.

Egy ideje a PHP sessions-nél is használjuk ezt a beállítást, amely az adatbázis szervereinken volt. Az adatbázis szerver akadozása az egész hoszting szakadozását okozta, ezért memcache szervereket használunk, amelyekbe PHP sessions-t táplálunk. A telepítés óta ezzel a gonddal nem találkoztunk.


Varnish


A varnish egy meglehetősen gyors reverse proxy, amely a weboldal statikus tartalmát egyenesen a RAM-on keresztül tudja cache-elni, vagy lokálisan a merevlemezre, így SSD merevlemezek használatánál nagyon gyors a hozzáférés. A reverse proxy egy vagy több szerver előtt állhat és ezek között oszthatja a terhelést. A lekérdezéseket a webszerverekre küldi, de ha az adatokat már tartalmazza, a webszerver helyett közvetíti. Ezzel csökkenti a webszerver terhelését, amely más feladatokat végezhet. A képek, HTML, JS, CSS cahe-eléséhez nagyon eredményesen használható. A cdb adatbázissal kellet csatlakoztatni, ami mondhatni nem volt egyszerű, mivel a varnish saját nyelvében a cdb adatbázis nem támogatott. Szerencsére a C programozási nyelvet támogatja, így a cdb adatbázis támogatását könnyen tudtuk pótolni. A be- és kikapcsolás lehetőséget a DNS szintjén lehetett megoldani. Elég, ha a weboldala IP címét a 195.210.29.47 címre változtatja. Ha csak tesztelni szeretné a weboldala működését a varnish-al, elég a hosts fájlt beállítani erre az IP címre.

Figyelem! A 6082 porton nem elérhető a webadmin felület, a porton keresztül a rendszer beállításai végezhetők el. Ezt nyilvánvaló okból az osztott tárhelyen nem engedhetjük meg.


PHP gyorsítás


A PHP alkalmazások gyorsítása a PHP gyorsító használatába rejlik. A mi esetünkben ez az eAccelerator. Ez a PHP gyorsító a PHP forráskódját fordítja le bytekódra és a továbbiakban ezt a kódot használja, így nem szükséges a PHP skripteket minden egyes hívásánál bytekódra fordítani, ami gyorsabb feldolgozást eredményez. A szervereinken a PHP gyorsítást már több ideje használjuk, a PHP4-nél alapméretezetten be van kapcsolva. A PHP5 és PHP5.3-nál azonban a fellépő problémák miatt kikapcsoltuk. A weboldalak többségénél nincs vele gond, teszteléssel biztosra mehet.