För webbplatser som är baserade på exempelvis WordPress , Joomla eller Laravel , och som inte har något användarspecifikt innehåll, rekommenderas det att hålla alla sidor i en statisk HTML-cache och endast regenerera cachen manuellt (eller automatiskt) om det sker ändringar i backend. Men om sidan innehåller dynamiskt innehåll som beror på sessioner och cookies eller språk och plats är användningen av OPcache lämplig.
Den så kallade starttiden för alla tre nämnda systemen är över 100 ms med en nyligen installerad CentOS7-server (med SSD och PHP 7.1). Varje gång ett PHP-skript körs måste det sammanställas till bytecode vid körning. OPcache implementerar nu en cache för den här bytkoden - om samma PHP-skript körs med nästa begäran behöver det inte kompileras om. Efter att ha aktiverat OPcache ställer vi in följande inställningar:
9006cec6c5d3d2498ee26c5bfd91590a
Körningstiden (i genomsnitt över 10 avrättningar) har nu minskats avsevärt:
| WordPress 4.7.4 | Joomla 3.7 | Laravel 5.4 | |
| utan OPcache | 295 ms | 201 ms | 110 ms |
| med OPcache | 54 ms | 59 ms | 13 ms |
| Faktor | 5,5 | 3,5 | 8,5 |
Eftersom vi sätter `validate_timestamps` till 0 och `revalidate_freq` till en varaktighet på en dag, byggs cachen praktiskt taget aldrig om automatiskt (vi gör detta medvetet manuellt). En liten Git-hook kör ett PHP-skript med varje pull. Så här aktiverar du hooken.:
a1678610c8b4c7db5997375944183830
a1678610c8b4c7db5997375944183830
Följande hjälpfunktion är också till hjälp för att mäta enskilda koddelar (eller hela körningstiden):
085f4291bbcc4e8a64bbea951ff49ab9
Om du vill få användbar information som status, använt minne eller cachat antal filer använder du den här PHP-funktionen:
3f6309d04bc7e48dd909859321b96209
För att dra nytta av OPcache i en lokal utvecklingsmiljö (som vanligtvis inte rekommenderas) använder vi ett trick.
OPcache är aktivt på alla servrar som har OPcache-modulen installerad och på vilken inställningen opcache.enable inte uttryckligen är inställd. Vi lämnar det så. Vi ställer bara in opcache.validate_timestamps = 1 i php.ini. Detta innebär att opcache.revalidate_freq = 2. Vi uppnår att OPcache omprövas nästan kontinuerligt för varje projekt. För de projekt där vi vill aktivera OPcache permanent använder vi projektrelaterade i .htaccess följande inställning:
1dd64a3f2fe4425b29b1409410fe3fc0
Sedan startar vi om webbservern och skapar följande skript:
91fb5289160e410607c9ea89112a575b
Det här skriptet rensar cacheminnet och bygger om det samtidigt. Nu ställer vi in ett arbetsytorelaterat RunOnSave- kommando i vår favoritredigerare VSCode:
91fb5289160e410607c9ea89112a575b