PHP OPcache on yksi tehokkaimmista suorituskykyoptimoinneista WordPress-palvelimella. Vaikka monet keskittyvät välimuisteihin, CDN-ratkaisuihin ja tietokantaoptimointiin, OPcache voi yksinään vähentää PHP:n suorittamaa työtä merkittävästi. Jokainen WordPress-sivulataus koostuu sadoista PHP-tiedostoista, jotka ilman OPcachea jouduttaisiin lukemaan, jäsentämään ja kääntämään jokaisella requestilla uudelleen.
Tuotantoympäristössä oikein konfiguroitu OPcache voi pienentää CPU-kuormaa, nopeuttaa vasteaikoja ja kasvattaa PHP-FPM:n kapasiteettia huomattavasti.
Mikä OPcache on?
Normaalisti PHP suorittaa seuraavan prosessin:
PHP File
↓
Parse
↓
Compile
↓
Execute
Tämä tapahtuu jokaisella requestilla.
OPcache tallentaa käännetyn bytecoden muistiin:
PHP File
↓
Compile Once
↓
Store in Memory
↓
Execute
Näin parseria ja kääntäjää ei tarvitse ajaa jatkuvasti.
Miksi WordPress hyötyy OPcachesta?
WordPress lataa jokaisella requestilla:
- WordPress coren
- aktiiviset lisäosat
- teeman
- mahdolliset Composer-riippuvuudet
Yhdellä sivulatauksella voidaan käsitellä satoja PHP-tiedostoja.
Ilman OPcachea:
Request
↓
Compile Hundreds of Files
↓
Execute
OPcachen kanssa:
Request
↓
Load Bytecode From Memory
↓
Execute
Tarkista että OPcache on käytössä
Komentorivillä:
php -i | grep opcache
Tai:
phpinfo();
Etsi:
Zend OPcache
Perusasetukset tuotantoon
Tyypillinen konfiguraatio:
opcache.enable=1
opcache.memory_consumption=256
opcache.interned_strings_buffer=32
opcache.max_accelerated_files=50000
opcache.validate_timestamps=1
opcache.revalidate_freq=60
Arvot riippuvat ympäristön koosta.
opcache.memory_consumption
Määrittää välimuistin koon megatavuina.
Esimerkiksi:
opcache.memory_consumption=256
Suuret WordPress-ympäristöt tarvitsevat usein:
512
tai enemmän.
opcache.max_accelerated_files
Määrittää kuinka monta PHP-tiedostoa voidaan välimuistittaa.
Tyypillinen WordPress-stack:
- core
- teema
- useita lisäosia
- Composer-kirjastoja
Suositus:
opcache.max_accelerated_files=50000
Interned strings buffer
WordPress käyttää paljon merkkijonoja.
Asetus:
opcache.interned_strings_buffer=32
vähentää muistinkulutusta.
Timestamp validation
Kehitysympäristö:
opcache.validate_timestamps=1
Tuotanto:
opcache.validate_timestamps=0
Tämä poistaa tiedostojen jatkuvan tarkistamisen.
Huomio:
Julkaisujen yhteydessä OPcache pitää tyhjentää manuaalisesti.
OPcache reset deployn yhteydessä
Esimerkki:
opcache_reset();
Tai palvelun uudelleenkäynnistys:
systemctl reload php8.3-fpm
Muistin käyttöasteen seuranta
Tarkista:
Used Memory
Free Memory
Wasted Memory
Jos muistia loppuu:
Cache Restarts
alkavat kasvaa.
Tämä heikentää suorituskykyä.
OPcache ja Composer
Composer-autoloading hyötyy merkittävästi OPcachesta.
Esimerkiksi:
vendor/
sisältää usein tuhansia tiedostoja.
Bytecode-välimuisti nopeuttaa niiden käyttöä huomattavasti.
OPcache ja WordPress-pluginit
Suuret pluginit:
- WooCommerce
- Elementor
- ACF Pro
- LMS-järjestelmät
sisältävät paljon PHP-luokkia.
OPcache vähentää niiden bootstrap-kustannusta merkittävästi.
Preloading PHP 8:ssa
PHP tukee preloadingia.
Esimerkki:
opcache.preload=/var/www/preload.php
Tämä lataa tärkeät luokat muistiin palvelimen käynnistyessä.
Sopii erityisesti:
- enterprise-ympäristöihin
- headless-ratkaisuihin
- API-palveluihin
JIT ja WordPress
PHP:n JIT-kääntäjä:
opcache.jit=tracing
WordPressissä hyöty on yleensä pieni.
Tyypillisesti:
- OPcache antaa suuren hyödyn
- JIT antaa hyvin rajallisen lisähyödyn
Useimmissa WordPress-ympäristöissä JIT ei ole kriittinen optimointi.
OPcache ja PHP-FPM
Yhdistelmä:
NGINX
↓
PHP-FPM
↓
OPcache
on nykyinen standardi.
OPcache vähentää jokaisen PHP-workerin tekemää työtä.
Monitorointi
Seuraa:
- hit rate
- memory usage
- cache restarts
- wasted memory
- cached scripts
Hyvä hit rate:
99%+
Yleisimmät virheet
- liian pieni memory_consumption
- liian pieni max_accelerated_files
- validate_timestamps päällä tuotannossa ilman syytä
- OPcachea ei tyhjennetä deployn yhteydessä
- muistinkäytön seurannan puute
- oletusasetusten käyttö suurilla sivustoilla
Esimerkkikonfiguraatio suurelle WordPress-sivustolle
opcache.enable=1
opcache.memory_consumption=512
opcache.interned_strings_buffer=32
opcache.max_accelerated_files=50000
opcache.validate_timestamps=0
opcache.save_comments=1
opcache.fast_shutdown=1
Tämä tarjoaa hyvän lähtökohdan tuotantoympäristöön.
Paras suorituskykymalli
CDN
↓
Page Cache
↓
NGINX
↓
PHP-FPM
↓
OPcache
↓
Redis
↓
Database
Tässä mallissa PHP suorittaa mahdollisimman vähän ylimääräistä työtä.
Yhteenveto
OPcache on yksi tärkeimmistä WordPress-palvelimen suorituskykyoptimoinneista. Se poistaa PHP-tiedostojen jatkuvan kääntämisen, pienentää CPU-kuormaa ja nopeuttaa WordPressin bootstrap-vaihetta merkittävästi.
Kun OPcache yhdistetään oikein konfiguroituun PHP-FPM:ään, Redis object cacheen ja tehokkaaseen page cache -ratkaisuun, WordPress pystyy käsittelemään huomattavasti suurempia liikennemääriä samalla palvelinresurssilla.