Optimalizace rychlosti načítání administrátorského panelu Bootstrap
Průvodce vylepšením výkonu

Zjistěte, jak správně nakonfigurovat seznamy pomocí generátoru CRUD, abyste se vyhnuli dlouhému načítání.


Optimalizace rychlosti načítání panelu pro správu

Díky generátoru CRUD PHP by doba načítání seznamů READ v panelu správce měla být obecně rychlá a neměla by přesáhnout několik sekund. Abnormálně dlouhá doba načítání je způsobena buď konfigurací vašich filtrů, nebo počtem dotazů potřebných k zobrazení dat.

V obou případech lze řešení snadno implementovat pomocí generátoru CRUD. Zde je uveden postup, jak zkrátit dobu načítání.


1. Filtry záznamů

Operace

Select with all records loaded
Výběr se všemi načtenými záznamy

Když do seznamu READ přidáte filtr záznamů, program odešle dotaz SQL a načte všechny záznamy z databáze. Poté vygeneruje výběrové pole, které bude obsahovat tolik možností, kolik máte záznamů.

To je ideální pro tabulky, které obsahují několik desítek nebo dokonce stovek záznamů, ale pokud jich tabulka obsahuje tisíce, výrazně to prodlouží dobu načítání stránky.

Řešení

V tomto případě je třeba při vytváření filtru z generátoru CRUD povolit načítání Ajaxem.
Při povoleném načítání Ajax se na stránce načte jednoduché vstupní pole připojené k zásuvnému modulu automatického dokončování. Zásuvný modul bude na požádání načítat záznamy pro automatické doplňování. Tímto způsobem se vyhnete načítání těžkých a zbytečných dat při načítání hlavní stránky.

Enable Ajax loading for your filter from the generator
Povolení načítání Ajaxu pro váš filtr z generátoru
Admin filter with Ajax loading enabled
Filtr správce s povoleným načítáním Ajax

Poznámka: Filtry jsou vzájemně závislé. Například pokud lze seznam filmů filtrovat podle názvu a jazyka, pokud zobrazíte pouze anglické filmy, filtr názvů nabídne pouze názvy anglických filmů.


2. Dotazy zasílané do databáze

Operace

Po načtení seznamu záznamů z databáze program provede následující dotazy:

  • Dotaz pro získání celkového počtu záznamů, který umožňuje sestavit stránkování.
  • Dotaz pro načtení záznamů zobrazených na stránce.
  • Dotaz na filtr, pokud máte filtry povoleny a nejsou načítány pomocí Ajaxu.

Pokud jste povolili externí vztahy, program provede také následující dotazy:

  • Dotaz na záznam a vztah pro získání souvisejících záznamů (pokud jste povolili externí vztahy).

Příklad

Admin panel count queries
Dotazy na počítání na panelu správce

Pokud máte například tabulku filmů propojenou s tabulkou herců a tabulkou kategorií a máte povoleno zobrazování jmen herců a kategorií v seznamu filmů, program provede pro každý film dva dotazy, aby získal jména herců a kategorie.
Pokud na jedné stránce zobrazíte 20 filmů, dostanete toto:

  1. Stránkování: 1 dotaz
  2. Záznamy: 1 dotaz
  3. Nejaxové filtry: 1 dotaz na filtr
  4. Aktéři (externí vztah): 20 dotazů
  5. Kategorie (vnější vztah): 20 dotazů

Celkem: 42 dotazů (+ filtry)

Řešení

Obvykle ani při relativně velkém počtu dotazů to nebude problém, protože tyto dotazy vracejí pouze omezený počet záznamů. Jsou proto efektivní a rychlé. Pokud přesto dochází k nadměrně dlouhému načítání, můžete zobrazení některých externích vztahů v hlavním seznamu zakázat a zobrazit je na jiné stránce. Můžete také omezit počet záznamů zobrazených na jedné stránce.


3. Použití indexů MySQL

Operace

To se netýká PHPCG, ale přímo struktury vaší databáze. Přidejte index ke každému poli, které budete pravidelně používat v dotazech. Stroj MySQL je s indexovanými poli rychlejší a efektivnější.

Řešení

Indexování polí:

  1. Otevřete správce databáze (phpMyAdmin nebo jiný).
  2. Zobrazte strukturu tabulky.
  3. Zaškrtněte pole, která chcete indexovat.
  4. Klikněte na tlačítko Index.

Hlavní stránka výukového programu PHP CRUD