Fetch-Leistung
Diese Seite ist für Designer, deren Seiten langsam geworden sind. In Templates kommen fast alle Kosten von Fetches und den
Attributen, die unbemerkt abrufen (children, parent, data_map). Die Regeln unten halten die Zahl der
Datenbankabfragen klein.
Inhalt
Die Regeln
- Einmal abrufen. Speichern Sie das Ergebnis in einer Variablen; übergeben Sie es Teilen als Parameter.
- Immer ein
limitbeilistundtree; blättern Sie mitoffsetund einemlist_count. - Im Fetch filtern (
class_filter_array,attribute_filter), nicht mit{if}in der Schleife. - Bevorzugen Sie, was Sie schon haben. Im Pagelayout enthält
$module_result.content_infoKlasse, Knoten-ID, Tiefe und URL-Alias der Seite ohne Fetch. - Cachen Sie, was für viele Besucher gleich ist: Menüs und Fußzeilen in Cache-Blöcken (Cache-Block).
- Halten Sie Vollansichten cachebar, damit der View-Cache sie ausliefert (Caching für Designer).
Attribute, die abrufen
| Attribut | Kosten |
|---|---|
$node.children | alle Kinder, kein Limit, kein Filter |
$node.children_count | eine Zählabfrage |
$node.parent, $node.path | ein oder mehrere Knoten-Fetches |
$node.data_map | die Felder des Objekts (einmal pro Objekt geladen) |
$node.object.owner, $node.creator | ein Objekt-Fetch |
$node.children bei einem Ordner mit Tausenden Einträgen ist die häufigste Ursache einer langsamen Seite: Verwenden Sie
stattdessen einen Fetch mit Limit.
Die Schleifenfalle
{* slow: one fetch per child *}
foreach $children as $child
def $sub = fetch( 'content', 'list', hash( 'parent_node_id', $child.node_id ) )
...
/foreachZehn Kinder bedeuten elf Abfragen, hundert bedeuten hundertundeine. Rufen Sie stattdessen die Nachkommen einmal mit tree
und depth 2 ab und gruppieren Sie sie im Template, oder zeigen Sie die Unterebene nur auf der eigenen Seite des Kindes.
Messen
Schalten Sie auf einem Test-Siteaccess die Debug-Ausgabe für Ihre Adresse ein ([DebugSettings] DebugOutput=enabled,
DebugByIP=enabled, DebugIPList[]): Sie zeigt die Zeit der Seite und die Datenbankabfragen. Vergleichen Sie vor und nach
einer Änderung, mit geleerten Caches und noch einmal mit warmen.
Verwandte Seiten
- Knoten und Listen abrufen
- Theme-Leistung
- Freie Dokumentation: Diese Seite darf unter der GNU FDL 1.3 frei kopiert, übersetzt und verbessert werden.
Werden Sie Exponential-Partner
Partner teilen ihre Informationen, stellen Mittel bereit, geben Beiträge zurück und entwickeln die Produkte mit uns, und so wächst Exponential. Eine Partner-Website und ein Dashboard sind für Mitte 2027 geplant: Werden Sie noch heute Partner, damit wir schneller wachsen und neue Funktionen früher liefern.