Optimización de arranque de PHP OPcache

Para sitios web basados ​​en WordPress , Joomla o Laravel , por ejemplo, y que no tienen contenido específico del usuario, se recomienda mantener todas las páginas en un caché HTML estático y solo regenerar el caché manualmente (o automáticamente) si hay cambios en el backend. Sin embargo, si la página contiene contenido dinámico que depende de las sesiones y las cookies o del idioma y la ubicación, el uso de 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 configuramos `validate_timestamps` a 0 y `revalidate_freq` a una duración de un día, la caché prácticamente nunca se reconstruye automáticamente (lo hacemos manualmente de forma deliberada). Un pequeño hook de Git ejecuta un script PHP con cada pull. Aquí te mostramos cómo activar el hook.:

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

Atrás