Buenas prácticas en el desarrollo de aplicaciones con Symfony

LIBP-0108 (Libro de pautas)

Se ofrece una serie de indicaciones destinadas a mejorar la eficiencia y el rendimiento de las aplicaciones que se desarrollan mediante el Framework Symfony

Pautas

TítuloCarácter
Optimización del servidorObligatoria
Número de objetos procesadosRecomendada
Consultas mediante JoinsObligatoria
Helpers por defectoObligatoria
Borrado selectivo de la cachéObligatoria
Almacenamiento de la cachéObligatoria

Optimización del servidor

Asignar el valor off a la variable magic_quotes_gpc del archivo php.ini para optimizar las conexiones

Para que no existan cuellos de botella en elementos externos a Symfony debemos mantener el servidor bien optimizado. Para ello hay que asignar el valor off a la variable magic_quotes_gpc del archivo php.ini, de manera que evitemos que PHP escape todas las comillas de los parámetros de la petición. Además, tendremos que usar un acelerador de PHP (como por ejemplo, APC, XCache, o eAccelerator), en el servidor de producción, ya que mejora el rendimiento de PHP y no tiene ningún inconveniente, y desactivar todas las herramientas de depuración.

Número de objetos procesados

Limitar el número de objetos que se procesan

Los métodos del modelo deben optimizarse para que devuelvan solamente un número limitado de registros, siempre que no se necesiten todos. De esta forma aumentamos la velocidad de ejecución de las consultas ya que está es directamente proporcional al número de resultados devueltos.

Consultas mediante Joins

Minimizar el número de consultas usando Joins

Mientras se desarrolla una aplicación, se debe controlar el número de consultas a la base de datos que realiza cada petición. Si el número de consultas crece de forma desproporcionada, seguramente es necesario utilizar un Join.

Helpers por defecto

Reducir los helpers por defecto

Debemos eliminar, de las lista de grupos de helpers estándar, aquellos grupos que estemos seguros que no vamos a utilizar, para evitar que se tenga que procesar el archivo del helper en cada petición.

Borrado selectivo de la caché

Borrar partes de la cache de forma selectiva

Hacer un borrado selectivo de la caché es más rápido y eficiente que borrar la caché de forma completa

Almacenamiento de la caché

Guardar los datos de la caché en una base de datos

Debemos guardar los datos de la caché en una base da datos SQLite ya que la caché de las plantillas es mucho más fácil de leer y de escribir cuando el número de elementos de la caché es muy grande. Si la aplicación hace un uso intensivo de la caché, los archivos almacenados en ésta acaban en una estructura de directorios muy profunda, por lo que utilizar el almacenamiento de SQLite mejora el rendimiento de la aplicación.

Además, borrar una caché almacenada en el sistema de archivos requiere eliminar muchos archivos, por lo que es una operación que puede durar algunos segundos, durante los cuales la aplicación no está disponible. Si se utiliza el almacenamiento de SQLite, el proceso de borrado de la caché consiste en borrar un solo archivo, precisamente el archivo que se utiliza como base de datos SQLite. Independientemente del número de archivos en la caché, el borrado es instantáneo.

Contenidos relacionados

Recursos
Área: Desarrollo » Construcción de Aplicaciones por Capas » PHP
Código Título Tipo Carácter
RECU-0263 Symfony Referencia Recomendado