Leistung und Caching
Diese Seite richtet sich an Website-Ersteller, die schnelle Seiten wollen. Exponential cacht auf vielen Ebenen; die meisten sind standardmäßig eingeschaltet. Diese Seite zeigt die Ebenen, die Hebel nach ihrer Wirkung geordnet und wie Sie messen (10.12 Leistungsoptimierung).

Inhalt
- Die Ebenen
- Die Hebel, nach Wirkung geordnet
- Messen
- Templates, die schnell bleiben
- Caches in der richtigen Reihenfolge leeren
Die Ebenen
| Ebene | Was sie vorhält | Lesen |
|---|---|---|
| Browser, Proxy, CDN | Seiten und statische Dateien, wenn die Header es erlauben | HTTP-Caching und CDNs |
| Antwort-Cache von Velocity | ganze öffentliche Seiten, beantwortet ohne PHP | Statischer Cache und Velocity |
| View-Cache für Inhalte | der gerenderte Hauptbereich jeder Seite | View-Cache und Cache-Blöcke |
| Template-Block-Cache | Ausgabe von {cache-block}: Menüs, Fußbereiche | ebenda |
| Kompilierte Templates | .tpl zu PHP kompiliert | |
| OPcache | kompiliertes PHP | 10.12 |
| SQL-Abfrage-Cache | Abfrageergebnisse, optional | SQL-Abfrage-Cache |
Die Hebel, nach Wirkung geordnet
Aus dem Installationshandbuch:
- Mit Velocity ausliefern und mit seinem Antwort-Cache; persistente Worker halten die Anwendung warm.
- Den View-Cache für Inhalte und den Template-Block-Cache eingeschaltet lassen
(
[ContentSettings] ViewCaching=enabled,[TemplateSettings] TemplateCache=enabled, beide mitgeliefert). Wärmen Sie die Website nach einem vollständigen Leeren mitphp bin/php/warm.php --allow-root-uservor. - OPcache.
- APCu für die Speicherstufe des Antwort-Caches und den gemeinsamen Abfrage-Cache.
- Der SQL-Abfrage-Cache (
querycache.ini), auf Ihrer Website gemessen. - Die Datenbank selbst (Datenbanken).
Lassen Sie den statischen Cache aus (StaticCache=disabled, der mitgelieferte Wert); der Antwort-Cache bietet Besuchern
denselben Vorteil, ohne das Veröffentlichen zu verlangsamen.
Messen
php bin/php/console exp:benchmark --save=var/benchmark/base.json --allow-root-user
# change something
php bin/php/console exp:benchmark --baseline=var/benchmark/base.json --threshold=15 --allow-root-userEs gibt Median, p90 und p99 pro Seite aus. Vergleichen Sie Läufe auf demselben Rechner, direkt hintereinander (Benchmarking). Messen Sie auch im Browser: Bildgrößen, Anzahl der Anfragen und Layoutverschiebungen sind oft wichtiger als die Serverzeit.
Templates, die schnell bleiben
- Holen Sie nur, was Sie anzeigen:
limit,class_filter_array,load_data_map, wo angeboten. - Kein Fetch eines ganzen Teilbaums im Pagelayout ohne Cache-Block.
- Cache-Blöcke mit genau den Schlüsseln, von denen die Ausgabe abhängt.
- Bilder in der richtigen Alias-Größe, mit
width,heightundloading="lazy"(Bilder und Bildvarianten). - Stylesheets und Skripte über den Packer (Stylesheets und Skripte).
Caches in der richtigen Reihenfolge leeren
Eine Seite, die zwischen dem Leeren eines Caches und dem Neuladen von PHP von altem Code gerendert wird, wird erneut
gecacht. Also: INI- und Template-Caches, dann PHP neu laden und Velocity neu starten, und erst danach die Inhalts-,
Template-Block- und Antwort-Caches. Unter Velocity erledigt exp:velocity deploy das in dieser Reihenfolge
(Die Reihenfolge nach einer Codeänderung).
| Sie haben geändert | Leeren |
|---|---|
| eine Einstellung | --clear-tag=ini |
| ein Template | --clear-tag=template |
| ein neues Template oder eine neue Override-Regel | --clear-id=template-override,design_base |
| ein Stylesheet oder Skript | --clear-id=ezjscore-packer,template-block, dann den Velocity-Cache |
| Inhalte wirken veraltet | --clear-tag=content |
Verwandte Seiten
- View-Cache und Cache-Blöcke
- Caches
- Profiling und 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.