For websteder, der er baseret på WordPress , Joomla eller Laravel og ikke har noget brugerspecifikt indhold, anbefales det at opbevare alle sider i en statisk HTML-cache og kun regenerere cachen manuelt (eller automatisk), når der foretages ændringer i backend. Men hvis siden indeholder dynamisk indhold, der afhænger af sessioner og cookies eller også af sprog og placering, er OPcache egnet .
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 indstiller validate_timestamps til 0 og samtidig revaliderer_freq til en varighed på en dag, genopbygges cachen næsten aldrig automatisk (vi gør bevidst dette manuelt). Med en lille git-kroge udføres et PHP-script med hver "pull". Sådan aktiveres 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