Ver índice de contenidos del libro

18.6. Optimizando el código fuente

También es posible mejorar el rendimiento de la aplicación optimizando el código fuente de la propia aplicación. En esta sección se ofrecen algunos consejos al respecto.

18.6.1. Compilación del núcleo de Symfony

Cargar diez archivos requieren muchas más operaciones de entrada/salida que cargar un solo archivo grande, sobre todo en discos lentos. Además, cargar un archivo muy grande consume muchos más recursos que cargar un archivo menor, sobre todo si una gran parte del archivo grande contiene información ignorada por PHP, por ejemplo los comentarios.

Por lo tanto, una operación que mejora mucho el rendimiento consiste en juntar una serie de archivos en un solo archivo y eliminar todos sus comentarios. Symfony ya realiza esta optimización y se llama compilación del núcleo de Symfony. Al principio de la primera petición (o después de que se haya borrado la cache) la aplicación Symfony concatena todas las clases del núcleo del framework Symfony (sfActions, sfRequest, sfView, etc.) en un solo archivo, optimiza el tamaño del archivo eliminando los comentarios y los espacios en blanco sobrantes y lo almacena en la cache, en un archivo llamado config_core_compile.yml.php. Las siguientes peticiones solamente cargan este archivo optimizado en lugar de los 30 archivos individuales que lo componen.

Si la aplicación dispone de clases que deben cargarse siempre y sobre todo si son clases grandes con muchos comentarios, puede ser muy beneficioso añadirlas a la compilación del núcleo de Symfony. Para ello, se crea un archivo llamado core_compile.yml en el directorio config/ de la aplicación y se listan las clases que se quieren añadir, como se muestra en el listado 18-21.

Listado 18-21 - Añadiendo las clases al archivo de compilación del núcleo de Symfony, en frontend/config/core_compile.yml

- %SF_ROOT_DIR%/lib/miClase.class.php
- %SF_ROOT_DIR%/apps/frontend/lib/miToolkit.class.php
- %SF_ROOT_DIR%/plugins/miPlugin/lib/miPluginCore.class.php
...

18.6.2. La tarea project:optimize

Symfony dispone de otra herramienta de optimización: la tarea project:optimize. Esta herramienta aplica varias estrategias de optimización sobre el código de Symfony y el código de la aplicación, lo que permite acelerar la ejecución de la aplicación.

$ php symfony project:optimize frontend prod

Si quieres conocer a fondo las estrategias de optimización que realiza la tarea, no dudes en consultar su código fuente.