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