För webbplatser som till exempel är baserade på WordPress , Joomla eller Laravel och inte har något användarspecifikt innehåll, är det tillrådligt att hålla alla sidor i en statisk HTML-cache och bara återskapa cache manuellt (eller automatiskt) när ändringar görs i backend. Men om sidan innehåller dynamiskt innehåll som beror på sessioner och cookies eller även på språk och plats, är 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 samtidigt revalidate_freq till en varaktighet av en dag, kommer cachen nästan aldrig att byggas om automatiskt (vi gör medvetet detta manuellt). Med en liten git-krok körs ett PHP-skript med varje "pull". Hur man aktiverar kroken:
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