OPcache PHP indítás optimalizálása

Azoknál a webhelyeknél, amelyek például WordPress , Joomla vagy Laravel alapúak és nem tartalmaznak felhasználóspecifikus tartalmat, tanácsos az összes oldalt statikus HTML gyorsítótárban tartani, és csak manuálisan (vagy automatikusan) regenerálni a gyorsítótárat, ha a háttérben módosulnak. Ha azonban az oldal dinamikus tartalmat tartalmaz, amely függ a munkamenetektől és a cookie-któl, illetve a nyelvtől és a helytől, az OPcache megfelelő .


Az úgynevezett indítási idő mindhárom említett rendszeren meghaladja a 100 ms-ot egy frissen telepített CentOS7 szerverrel (SSD-vel és PHP 7.1-vel). Minden alkalommal, amikor egy PHP parancsfájlt végrehajtanak, futás közben byte-kódokká kell fordítani. Az OPcache most megvalósít egy gyorsítótárat ehhez a bájtkódhoz - ha ugyanazt a PHP parancsfájlt futtatják a következő kéréssel, akkor nem kell újrafordítani. Az OPcache aktiválása után a következő beállításokat adjuk meg:

9006cec6c5d3d2498ee26c5bfd91590a

A végrehajtási idő (átlagosan 10 végrehajtás felett) mára jelentősen lerövidült:

WordPress 4.7.4 Joomla 3.7 Laravel 5.4
OPcache nélkül 295 ms 201 ms 110 ms
az OPcache-el 54 ms 59 ms 13 ms
Tényező 5,5 3,5 8,5

Mivel a validate_timestamps értéket 0-ra állítottuk, és egyidejűleg a revalidate_freq értéket egy napos időtartamra állítottuk be, a gyorsítótár szinte soha nem épül újra automatikusan (ezt tudatosan végezzük manuálisan). Egy kis git horoggal egy PHP szkript végrehajtásra kerül minden "húzásnál". Hogyan lehet aktiválni a horgot:

a1678610c8b4c7db5997375944183830

a1678610c8b4c7db5997375944183830

A következő segítő funkció szintén hasznos az egyes kódrészek (vagy a teljes végrehajtási idő) mérésére:

085f4291bbcc4e8a64bbea951ff49ab9

Ha hasznos információkat szeretne kapni, mint például az állapot, a használt memória vagy a gyorsítótárban tárolt fájlok száma, használhatja ezt a PHP funkciót:

3f6309d04bc7e48dd909859321b96209

Annak érdekében, hogy az OPcache előnyeit élvezhessük egy helyi fejlesztői környezetben (ami általában nem ajánlott), használunk egy trükköt.

Az OPcache aktív minden olyan kiszolgálón, amelyre telepítve van az OPcache modul, és amelyekre az opcache.enable beállítás nincs kifejezetten beállítva. Így hagyjuk. Csak az opcache.validate_timestamps = 1 értéket állítottuk be a php.ini fájlban. Ez azt jelenti, hogy az opcache.revalidate_freq = 2. Ez azt jelenti, hogy az OPcache minden projektnél szinte folyamatosan újra érvényesül. Azokhoz a projektekhez, amelyekben véglegesen aktiválni szeretnénk az OPcache-t, a projekthez kapcsolódó programot használunk a .htaccess alatt állítsa be a következő beállítást:

1dd64a3f2fe4425b29b1409410fe3fc0

Ezután újraindítjuk a webszervert, és létrehozzuk a következő parancsfájlt:

91fb5289160e410607c9ea89112a575b

Ez a szkript egyszerre törli a gyorsítótárat és újjáépíti. Most beállítottunk egy munkaterülettel kapcsolatos RunOnSave parancsot a kedvenc szerkesztő VSCode-ban:

91fb5289160e410607c9ea89112a575b

Vissza