Para los sitios web que están basados en WordPress , Joomla o Laravel , por ejemplo, y no tienen contenido específico del usuario, es recomendable mantener todas las páginas en un caché HTML estático y solo regenerar el caché manualmente (o automáticamente) cuando se realizan cambios en el backend. Sin embargo, si la página contiene contenido dinámico que depende de sesiones y cookies o también del idioma y la ubicación, OPcache es adecuado .
El llamado tiempo de arranque para los tres sistemas mencionados es de más de 100 ms con un servidor CentOS7 recién instalado (con SSD y PHP 7.1). Cada vez que se ejecuta un script PHP, debe compilarse en código de bytes en tiempo de ejecución. OPcache ahora implementa una caché para este código de bytes; si se ejecuta el mismo script PHP con la siguiente solicitud, no es necesario volver a compilarlo. Después de activar OPcache, configuramos las siguientes configuraciones:
9006cec6c5d3d2498ee26c5bfd91590a
El tiempo de ejecución (con un promedio de más de 10 ejecuciones) ahora se ha reducido significativamente:
WordPress 4.7.4 | Joomla 3.7 | Laravel 5.4 | |
sin OPcache | 295 ms | 201 ms | 110 ms |
con OPcache | 54 ms | 59 ms | 13 ms |
Factor | 5,5 | 3,5 | 8,5 |
Dado que establecemos validate_timestamps en 0 y al mismo tiempo revalidate_freq en una duración de un día, la caché casi nunca se reconstruye automáticamente (lo hacemos conscientemente de forma manual). Con un pequeño gancho de git , se ejecuta un script PHP con cada "extracción". Cómo activar el gancho:
a1678610c8b4c7db5997375944183830
a1678610c8b4c7db5997375944183830
La siguiente función auxiliar también es útil para medir partes de código individuales (o el tiempo de ejecución completo):
085f4291bbcc4e8a64bbea951ff49ab9
Si desea obtener información útil como el estado, la memoria utilizada o la cantidad de archivos almacenados en caché, use esta función de PHP:
3f6309d04bc7e48dd909859321b96209
Para beneficiarse de OPcache en un entorno de desarrollo local (que generalmente no se recomienda), usamos un truco.
OPcache está activo en todos los servidores que tienen el módulo OPcache instalado y en los que la configuración opcache.enable no está establecida explícitamente. Lo dejamos así. Solo configuramos opcache.validate_timestamps = 1 en php.ini. Esto significa que opcache.revalidate_freq = 2. Esto significa que OPcache se revalida casi continuamente para cada proyecto. Para aquellos proyectos en los que queremos activar OPcache de forma permanente, utilizamos proyectos relacionados en el .hta acceda a la siguiente configuración:
1dd64a3f2fe4425b29b1409410fe3fc0
Luego reiniciamos el servidor web y creamos el siguiente script:
91fb5289160e410607c9ea89112a575b
Este script borra el caché y lo reconstruye al mismo tiempo. Ahora configuramos un comando RunOnSave relacionado con el espacio de trabajo en nuestro editor favorito VSCode:
91fb5289160e410607c9ea89112a575b