For hjemmesider, der eksempelvis er baseret på WordPress , Joomla eller Laravel , og som ikke har noget brugerspecifikt indhold, anbefales det at holde alle sider i en statisk HTML-cache og kun regenerere cachen manuelt (eller automatisk), hvis der er ændringer i backend. Men hvis siden indeholder dynamisk indhold, der afhænger af sessioner og cookies eller sprog og placering, er brugen af OPcache velegnet.
Den såkaldte starttid for alle tre nævnte systemer er over 100 ms med en nyinstalleret CentOS7-server (med SSD og PHP 7.1). Hver gang et PHP-script udføres, skal det kompileres til bytecode ved kørsel. OPcache implementerer nu en cache til denne bytecode - hvis det samme PHP-script udføres med den næste anmodning, behøver det ikke at blive kompileret igen. Efter aktivering af OPcache indstiller vi følgende indstillinger:
9006cec6c5d3d2498ee26c5bfd91590a
Henrettelsestiden (i gennemsnit over 10 henrettelser) er nu reduceret betydeligt:
| WordPress 4.7.4 | Joomla 3.7 | Laravel 5.4 | |
| uden OPcache | 295 ms | 201 ms | 110 ms |
| med OPcache | 54 ms | 59 ms | 13 ms |
| Faktor | 5,5 | 3,5 | 8,5 |
Da vi har sat validate_timestamps til 0 i indstillingerne og samtidig sat revalidate_freq til en varighed på én dag, bliver cachen stort set aldrig genopbygget automatisk (det gør vi bevidst manuelt). Med en lille Git-hook udføres et PHP-script ved hvert "træk". Sådan aktiverer du krogen:
a1678610c8b4c7db5997375944183830
a1678610c8b4c7db5997375944183830
Følgende hjælperfunktion er også nyttig til at måle individuelle kodedele (eller hele udførelsestiden):
085f4291bbcc4e8a64bbea951ff49ab9
Hvis du ønsker at få nyttige oplysninger som status, brugt hukommelse eller cachelagret antal filer, bruger du denne PHP-funktion:
3f6309d04bc7e48dd909859321b96209
For at drage fordel af OPcache i et lokalt udviklingsmiljø (som generelt ikke anbefales) bruger vi et trick.
OPcache er aktiv på alle servere, der har OPcache-modulet installeret, og som indstillingen opcache.enable ikke er angivet eksplicit. Vi lader det være sådan. Vi indstiller kun opcache.validate_timestamps = 1 i php.ini. Dette betyder, at opcache.revalidate_freq = 2. Dette betyder, at OPcache næsten genvalideres kontinuerligt for hvert projekt. For de projekter, hvor vi vil aktivere OPcache permanent, bruger vi projektrelaterede i .htaccess følgende indstilling:
1dd64a3f2fe4425b29b1409410fe3fc0
Derefter genstarter vi webserveren og opretter følgende script:
91fb5289160e410607c9ea89112a575b
Dette script rydder cachen og genopbygger den på samme tid. Nu indstiller vi en arbejdsområde-relateret RunOnSave- kommando i vores foretrukne editor VSCode:
91fb5289160e410607c9ea89112a575b