Wat is OPcache
Wat is OPcache?
OPcache is een cache in PHP die gecompileerde code in het geheugen bewaart. PHP-bestanden worden niet direct uitgevoerd zoals ze zijn; eerst worden ze omgezet naar een tussenvorm, de opcode. Die omzetting kost tijd. OPcache slaat het resultaat op, zodat het bij een volgend verzoek niet opnieuw hoeft.
OPcache is geen losse plugin maar onderdeel van PHP zelf. Of het op jouw hosting aanstaat, hangt af van de configuratie. Dat kun je bij je hoster navragen.
Wat OPcache wel en niet doet
OPcache bewaart alleen de code, niet de uitkomst. Een PHP-pagina wordt dus nog steeds uitgevoerd, maar de server hoeft de code niet elke keer opnieuw in te lezen en om te zetten. Daardoor is het effect vooral merkbaar bij grote PHP-applicaties met veel bestanden, zoals een CMS of webshop.
OPcache bewaart geen pagina's en geen databasegegevens. Daarvoor heb je andere vormen van caching nodig, zoals paginacaching en objectcaching. De lagen staan dus los van elkaar en versterken elkaar.
Wanneer merk je het verschil?
Het verschil is het grootst bij applicaties met veel PHP-code die bij elk verzoek wordt uitgevoerd. Een eenvoudige statische pagina laat weinig zien, want daar draait vrijwel geen PHP. Bij WordPress, Joomla of een webshop, waar honderden bestanden samen één pagina vormen, is de winst zichtbaar.
Omdat OPcache niet van de uitkomst afhangt, werkt het ook bij pagina's die steeds anders zijn, zoals een ingelogde omgeving. Het is daarom een basislaag die niet afhangt van de inhoud van de pagina.
Veelgestelde vragen
Kan OPcache verouderde code tonen?
Ja, in een bepaalde situatie. Afhankelijk van de instellingen controleert OPcache of bestanden zijn gewijzigd. Op sommige omgevingen gebeurt dat niet automatisch. Als je een PHP-bestand aanpast en de nieuwe versie niet zichtbaar is, kan het helpen om de OPcache leeg te maken of de PHP-omgeving opnieuw te laden. Je hoster kan aangeven hoe dat bij jouw pakket werkt.
Moet ik OPcache uitschakelen om fouten te zoeken?
Meestal niet. Uitschakelen om te testen is zelden nodig, omdat fouten in de code gewoon zichtbaar blijven. Wel kan het handig zijn om bij twijfel over verouderde code de cache tijdelijk leeg te maken. Verander geen instellingen op een productieserver zonder dat je weet wat ze doen, en vraag je hoster als je het niet zeker weet.