Ottimizzare la velocità di caricamento del pannello amministrativo di Bootstrap
Guida al miglioramento delle prestazioni

Impari a configurare correttamente le sue liste con il Generatore CRUD per evitare lunghi tempi di caricamento.


Ottimizzare la velocità di caricamento del suo pannello di amministrazione

Con il Generatore CRUD PHP, il tempo di caricamento del suo pannello di amministrazione Liste READ dovrebbe essere generalmente veloce e non superare i pochi secondi al massimo. Tempi di caricamento anormalmente lunghi sono dovuti alla configurazione dei filtri o al numero di query necessarie per visualizzare i dati.

In entrambi i casi, la soluzione è semplice da implementare utilizzando il Generatore CRUD. Ecco come procedere per ridurre i tempi di caricamento.


1. Filtri di registrazione

Operazione

Select with all records loaded
Seleziona con tutti i record caricati

Quando aggiunge un filtro record alla sua lista READ, il programma invia la query SQL e recupera tutti i record dal database. Quindi genera un campo di selezione che includerà tante opzioni quanti sono i record.

Questo è perfetto per una tabella che contiene poche decine o addirittura centinaia di record, ma se la sua tabella ne contiene migliaia, aumenterà significativamente il tempo di caricamento della pagina.

Soluzione

In questo caso, deve abilitare il caricamento Ajax quando crea il suo filtro dal generatore CRUD.
Con il caricamento Ajax abilitato, la pagina caricherà un semplice campo di input collegato a un plugin di completamento automatico. Il plugin recupererà i record su richiesta per il completamento automatico. In questo modo, evita di caricare dati pesanti e non necessari durante il caricamento della pagina principale.

Enable Ajax loading for your filter from the generator
Abilita il caricamento Ajax per il suo filtro dal generatore
Admin filter with Ajax loading enabled
Filtro amministratore con caricamento Ajax abilitato

Nota: i filtri sono interdipendenti. Ad esempio, se un elenco di film può essere filtrato per titolo e lingua, se visualizza solo i film in inglese, il filtro del titolo offrirà solo i titoli dei film in inglese.


2. Query inviate al database

Operazione

Quando carica un elenco di record dal suo database, il programma esegue le seguenti query:

  • Una query per recuperare il numero totale di record, che permette di costruire la paginazione.
  • Una query per recuperare i record visualizzati nella pagina.
  • Una query per filtro, se ha abilitato i filtri e questi non vengono caricati con Ajax.

Se ha abilitato le relazioni esterne, il programma eseguirà anche le seguenti query:

  • Una query per record e per relazione per recuperare i record correlati (se ha abilitato le relazioni esterne).

Esempio

Admin panel count queries
Le query di conteggio del pannello di amministrazione

Per esempio, se ha una tabella di film collegata a una tabella di attori e a una tabella di categorie, e ha abilitato la visualizzazione dei nomi degli attori e delle categorie nell'elenco dei film, il programma eseguirà due query per ogni film per recuperare i nomi degli attori e le categorie.
Se visualizza 20 film per pagina, si ottiene questo:

  1. Paginazione: 1 query
  2. Registrazioni: 1 query
  3. Filtri non-Ajax: 1 query per filtro
  4. Attori (relazione esterna): 20 query
  5. Categorie (relazione esterna): 20 query

Totale: 42 query (+ filtri)

Soluzione

Di solito, anche se c'è un numero relativamente elevato di query, non sarà un problema, perché queste query restituiscono solo un numero limitato di record. Sono quindi efficienti e veloci. Se tuttavia i tempi di caricamento sono eccessivamente lunghi, può disabilitare la visualizzazione di alcune relazioni esterne nell'elenco principale e visualizzarle in un'altra pagina. Può anche limitare il numero di record visualizzati per pagina.


3. Utilizzare gli indici MySQL

Operazione

Questo non riguarda PHPCG, ma direttamente la struttura del suo database. Aggiunga un indice a ogni campo che verrà utilizzato regolarmente nelle sue query. Il motore MySQL è più veloce ed efficiente con i campi indicizzati.

Soluzione

Per indicizzare i suoi campi:

  1. Apra il suo gestore di database (phpMyAdmin o altro).
  2. Mostri la struttura della sua tabella.
  3. Selezioni i campi che desidera indicizzare.
  4. Clicchi sul pulsante Indice.

Pagina principale del tutorial PHP CRUD