Optimización de la velocidad de carga del panel de administración de Bootstrap
Guía de mejora del rendimiento

Aprenda a configurar correctamente sus listas con el generador CRUD para evitar largos tiempos de carga.


Optimice la velocidad de carga de su panel de administración

Con el generador PHP CRUD, el tiempo de carga de las listas READ de su panel de administración debería ser generalmente rápido y no superar unos segundos como máximo. Los tiempos de carga anormalmente largos se deben a la configuración de sus filtros o al número de consultas necesarias para mostrar los datos.

En ambos casos, la solución es sencilla de implementar utilizando el Generador CRUD. A continuación le indicamos cómo proceder para reducir el tiempo de carga.


1. Filtros de registro

Operación

Select with all records loaded
Seleccionar con todos los registros cargados

Cuando añade un filtro de registros a su lista READ, el programa envía la consulta SQL y recupera todos los registros de la base de datos. A continuación, genera un campo de selección que incluirá tantas opciones como registros tenga.

Esto es perfecto para una tabla que contenga unas pocas docenas o incluso cientos de registros, pero si su tabla contiene miles, aumentará significativamente el tiempo de carga de la página.

Solución

En este caso, necesita habilitar la carga Ajax al crear su filtro desde el generador CRUD.
Con la carga Ajax activada, la página cargará un campo de entrada simple unido a un plugin de autocompletado. El plugin obtendrá los registros bajo demanda para el autocompletado. De esta forma, evitará cargar datos pesados e innecesarios al cargar su página principal.

Enable Ajax loading for your filter from the generator
Habilite la carga Ajax para su filtro desde el generador
Admin filter with Ajax loading enabled
Filtro Admin con carga Ajax activada

Nota: Los filtros son interdependientes. Por ejemplo, si una lista de películas puede filtrarse por título e idioma, si sólo muestra las películas inglesas, el filtro por título sólo ofrecerá los títulos de las películas inglesas.


2. Consultas enviadas a la base de datos

Operación

Cuando carga una lista de registros de su base de datos, el programa realiza las siguientes consultas:

  • Una consulta para recuperar el número total de registros, que permite construir la paginación.
  • Una consulta para recuperar los registros mostrados en la página.
  • Una consulta por filtro si tiene filtros habilitados y no se cargan con Ajax.

Si ha activado las relaciones externas, el programa también realizará las siguientes consultas:

  • Una consulta por registro y por relación para recuperar los registros relacionados (si ha activado las relaciones externas).

Ejemplo

Admin panel count queries
Consultas de recuento en el panel de administración

Por ejemplo, si tiene una tabla de películas vinculada a una tabla de actores y a una tabla de categorías, y ha activado la visualización de los nombres de los actores y las categorías en la lista de películas, el programa realizará dos consultas por cada película para recuperar los nombres de los actores y las categorías.
Si muestra 20 películas por página, obtendrá lo siguiente:

  1. Paginación: 1 consulta
  2. Registros: 1 consulta
  3. Filtros no Ajax: 1 consulta por filtro
  4. Actores (relación externa): 20 consultas
  5. Categorías (relación externa): 20 consultas

Total: 42 consultas (+ filtros)

Solución

Normalmente, aunque haya un número relativamente grande de consultas, no será un problema porque estas consultas sólo devuelven un número limitado de registros. Por lo tanto, son eficaces y rápidas. No obstante, si los tiempos de carga son excesivamente largos, puede desactivar la visualización de determinadas relaciones externas en la lista principal y mostrarlas en otra página. También puede limitar el número de registros mostrados por página.


3. Utilizar índices MySQL

Operación

Esto no concierne a PHPCG, sino directamente a la estructura de su base de datos. Añada un índice a cada campo que vaya a utilizar regularmente en sus consultas. El motor MySQL es más rápido y eficaz con los campos indexados.

Solución

Para indexar sus campos:

  1. Abra su gestor de base de datos (phpMyAdmin u otro).
  2. Muestre la estructura de su tabla.
  3. Marque los campos que desea indexar.
  4. Pulse el botón de índice.

Página principal del tutorial PHP CRUD