Een ontwikkelaar migreert een PrestaShop-winkel naar een “snellere” VPS. De pagina's blijven zacht. Profilering toont 40% van de CPU-tijd bij PHP-compilatie. OPcache was uitgeschakeld in een php.ini gekopieerd van een oude gedeelde site. Twee regels gecorrigeerd, TTFB gehalveerd – zonder de processor aan te raken.
OPcache slaat de gecompileerde bytecode van PHP-bestanden op in gedeeld geheugen. Zonder dit herleest en compileert elke zoekopdracht de bronnen. Op WordPress – inclusief honderden bestanden – is de impact enorm. Dit is vaak de eerste manier om te controleren, vóór PHP-FPM, vóór HTTP/3, voordat u van host verandert.
Controleer de werkelijke status — ga er niet van uit
php -i | grep -E 'opcache.enable|opcache.geheugen'
Of een tijdelijke phpinfo()-pagina in pre-productie. Belangrijkste punten:
| Richtlijn | Rol | Waarschuwingssignaal |
|---|---|---|
opcache.enable=1 | Cache inschakelen | 0 in productie |
opcache.memory_consumption | Speciaal geheugen (MB) | Te laag → frequente huisuitzettingen |
opcache.max_accelerated_files | Maximaal aantal bestanden | WordPress + Componist > 10.000 → verhogen |
opcache.validate_timestamps | Opnieuw compileren als bestand is gewijzigd | Uitgeschakeld zonder implementatieprocedure = spookbugs |
opcache.revalidate_freq | Verificatiedeadline | Te hoog in dev, acceptabel in stabiele productie |
Op PHP 8 en hoger kan JIT helpen bij intensieve berekeningen; marginale winst op klassiek CMS – geef er geen prioriteit aan vóór een gezonde OPcache.
Pragmatische instellingen per context
WordPress / Gedeeld CMS — bevestig enable=1 en max_accelerated_files ≥ 10000; Laat vaak de standaardinstellingen van de host staan. VPS met Git-implementaties — validate_timestamps=0 in productie als uw pipeline PHP-FPM herlaadt of opcache_reset() aanroept in CLI na de implementatie. Efemere containers — OPcache begint bij elke herstart helemaal opnieuw; een opwarmscript kan helpen. Multisite of grote monorepo — controleer opcache_get_status(): succespercentage < 95% → onvoldoende geheugen of max_files.
Koppelingen met FPM en TTFB
Elke PHP-FPM-werker profiteert van gedeeld OPcache-geheugen. Een ondermaatse OPcache dwingt hercompilaties af en blaast indirect het RAM-geheugen per werker op. Logische volgorde: Correcte OPcache, vervolgens Redis-objectcache of paginacache, vervolgens PHP-FPM-aanpassing, en vervolgens TTFB-diagnose. Het negeren van OPcache en vervolgens het verdubbelen van de werknemers betekent tweemaal betalen voor dezelfde fout.
De bovenste: bytecode-cache verschijnt niet in PageSpeed
Marketing verkoopt processorkernen; OPcache is onzichtbaar op het verkoopblad – maar bepalend voor de factuur en de echte latentie. Vergelijk hosts alleen via de overzicht na verificatie.
Beslis en ga vooruit zonder blinde vlek
Bevestig tijdens de productie dat opcache.enable actief is en noteer het cachetrefferpercentage vóór verdere optimalisatie. Pas memory_consumption en max_accelerated_files aan op basis van de werkelijke grootte van het project – WordPress met veel plug-ins overschrijdt al snel de tienduizend bestanden. Documenteer de dumpprocedure tijdens de implementatie: PHP-FPM opnieuw laden of CLI-reset, nooit openbaar eindpunt. Meet TTFB voor en na; optimaliseer dan pas de FPM of verander de host.
Veelgestelde vragen
Is OPcache standaard ingeschakeld?
Op PHP 7 en hoger in productie vaak wel, maar niet altijd op oude gedeelde of minimale containerimages. Controleer dit met phpinfo() of php -i | grep opcache.
validate_timestamps in- of uitgeschakeld in productie?
Uitgeschakeld plus opnieuw implementeren waardoor OPcache wordt leeggemaakt = maximale prestaties. Ingeschakeld plus frequente implementaties = eenvoudiger zonder te vergeten de cache te wissen. Kies op basis van uw pijplijn, niet op basis van een universele regel.
Vervangt OPcache Redis of een paginacache?
Nee. OPcache cachet gecompileerde PHP-bytecode. Redis verbergt applicatiegegevens; een paginacache voorkomt het uitvoeren van PHP. De drie vullen elkaar aan.
Hoe OPcache wissen na een implementatie?
Laad PHP-FPM opnieuw, roep opcache_reset() aan op een speciale opdrachtregel, of integreer de reset in de implementatietool - nooit door reset() openbaar op internet te plaatsen.
Voordat u een snellere server koopt, één vraag: Is OPcache ingeschakeld en wat is het succespercentage ervan? Als u er nog nooit naar heeft gekeken, heeft u PHP nog niet geoptimaliseerd.
