Cos'e OPcache
OPcache e un'estensione PHP inclusa di default da PHP 5.5 che memorizza in shared memory il bytecode pre-compilato degli script. Senza OPcache, PHP parsa e compila ogni file .php a ogni richiesta. Con OPcache, la compilazione avviene una volta sola: enormi guadagni di CPU e velocità.
Come funziona
Alla prima richiesta di /index.php, PHP parsa il file (lex, parse, compile) producendo opcodes. OPcache li salva in shared memory. Richieste successive saltano direttamente all'esecuzione degli opcodes cached. Tipico boost: 2-3x velocità su WordPress, 4-5x su framework PHP grandi (Laravel, Symfony).
Configurazione base
php.ini sezione [opcache]: opcache.enable=1, opcache.memory_consumption=256 (MB), opcache.interned_strings_buffer=16, opcache.max_accelerated_files=20000 (per sito grande), opcache.revalidate_freq=60 (secondi). Riavvia PHP-FPM dopo modifiche.
opcache.validate_timestamps
Se 1 (default), PHP controlla mtime dei file ogni revalidate_freq secondi per detectare modifiche. Se 0, non controlla mai - massima performance ma serve reset cache manualmente al deploy. Strategia produzione: timestamps=0 + clear cache nel deploy script (opcache_reset() o systemctl restart php-fpm).
OPcache JIT (PHP 8)
Da PHP 8.0 OPcache include JIT (Just-In-Time compiler) che traduce opcodes in machine code nativo. opcache.jit=1255, opcache.jit_buffer_size=128M. Per workload CPU-intensive (calcoli, image processing) boost 10-100x. Per WordPress (I/O bound) benefits marginali, ma comunque positivi.
Verificare lo stato
opcache.php script (Rasmus Lerdorf): mostra hit rate, memoria usata, file cached. Cerca: hit rate sopra 99%, memoria non saturata, no restart frequenti. Comandi: php -i | grep opcache. Dashboard utili: opcache-gui (Tudor Bastea), OpCache GUI plugin Symfony. Monitor in produzione hit rate sotto 95% indica memoria insufficiente.
Hai bisogno di aiuto?
Se vuoi un sito veloce ottimizzato dal team di G Tech Group, scrivici tramite il modulo di contatto.