Tipps & Tricks #3: eZ Publish Performance messen und Caching

Eine schnelle Website freut nicht nur die Nutzer sondern auch Suchmaschinen und den Webmaster. eZ Publish stellt eine Reihe von Funktionen und Werkzeugen zur Verfügung, um die Geschwindigkeit zu messen und zu optimieren. Wie kann ich die Ladezeit meiner eZ Publish Website optimieren? Für eine Standard Website mit den Standard Templates sind nur wenige Optimierungen notwendig. Werden viele neue Templates erstellt, so lohnt sich ein Tuning durchaus! Bevor es an die Optimierung geht, gilt es zunächst herauszufinden, warum die Website ggf. langsam ist.

Wie messe ich die Geschwindigkeit?

Man kann natürlich die Seite mit einem Browser öffnen und die Zeiten messen. Diese Messung würde jedoch auch die Übertragungszeit, welche von der individuellen Internetverbindung abhängt, mit einbeziehen. Zudem wäre nicht ersichtlich, an welchen Stellen genau die Zeit zum Seitenaufbau benötigt wird. eZ stellt ein ziemlich gutes Tool zur Verfügung, um die Seiten genau zu messen.

Folgende Einstellung genügt, sie kann vorübergehend sogar auf Seiten, die bereits produktiv sind, eingesetzt werden:

site.ini

[DebugSettings]
DebugOutput=enabled
DebugByIP=enabled
DebugIPList[]=89.121.122.99

Die Debug Ausgaben erscheinen nur, wenn die Website mit der eingetragenen IP-Adresse (hier 89.121.122.99) aufgerufen werden!
Nun sollte am Ende der Seite eine Reihe von Meldungen erscheinen. Besonders interessant ist die Tabelle am Ende der Seite:

Schockierend ist hier oft ein Wert (die „1“ hier im Beispiel ist wunderbar und steht für ein gut getuntes eZ) :

Nicht selten werden für eine Seite über 500 queries gemeldet! Selbst wenn die Zeit für die queries bei scheinbar harmlosen 0.1 sekunden liegt ist dieser Wert alarmierend: hinter jeder query stecken viele Aufrufe von Methoden und Templates, die CPU Zeit kosten! Zu sehen ist dies an der Zeit, die für „Template processing“ angezeigt wird.

Aber: Wie sieht eine gut getunte eZ Seite aus?

Eine schnelle eZ Seite mit der aktuellen Version (4.5 oder community project 2011.8) dürfte nur 1-2 mysql queries aufweisen. Die Ladezeit einer Seite liegt dann je nach System bei ca. 0,1 Sekunden.

Erste Hilfe

Was tun, wenn die Seite mehr als 2 Queries zeigt?

1. Wichtig: settings prüfen!

Ich habe bereits viele langsame eZ Seiten gesehen. Ein Blick in das setup genügt oftmals schon: das Caching war ausgeschaltet! Viele Entwickler vergessen, das Caching auf dem Live Server einzuschalten oder es gab Probleme mit der gecachten Seite.

Wie finde ich die wichtigsten Caching Einstellungen? Folgendes Script findet diese Lücken:

$siteINI = eZINI::instance( 'site.ini' ); $viewCache = $siteINI->variable('ContentSettings','ViewCaching');
$templateCache = $siteINI -> variable('TemplateSettings','TemplateCache');
$templateCompile = $siteINI -> variable('TemplateSettings','TemplateCompile');
$errors = 0;
$errors += checkSettings ($viewCache, "enabled", "Turn on ViewCaching!");
$errors += checkSettings ($templateCache, "enabled", "Turn on TemplateCaching!");
$errors += checkSettings ($templateCompile, "enabled", "Turn on TemplateComile!");

if ($errors) {
echo "Bitte Einstellungen pruefen!";
} else {
echo "Einstellungen sind in Ordnung";
}

function checkSettings (string $setting, string $check_for, string $error_msg) {
if ($setting <> $check_for) {
echo $error_msg . "\n";
return 1;
}
return 0;
}

Aufruf:  php bin/php/ezexec.php check_cache_settings.php -s ger

“ger” steht für den siteaccess, der geprüft werden soll.
Es prüft die wichtigsten Einstellungen und gibt Tipps, welche Einstellungen fehlen.
Die Einstellungen vornehmen und die Seite neu laden.

2. eZ Tuning

Das mächtigste Werkzeug zum Tunen der Website heißt caching! eZ nutzt wie fast alle CMS Systeme verschiedene Caching-Verfahren, um die Seite zu beschleunigen.
Caching kann aber auch unerwartete Probleme erzeugen und deshalb schalten viele eZ Entwickler den Cache erst gar nicht ein. Davon rate ich dringend ab. Ein eZ ohne Caching ist wie Auto fahren mit angezogener Handbremse.

Um das Caching verstehen zu können, möchte ich zunächst die wichtigsten Caching Verfahren von eZ vorstellen. Intern verwendet eZ noch wesentlich mehr caches, aber nicht alle sind für die Entwicklung und das Tuning wichtig.

Daher möchte ich zunächst nur zwei Caching-Verfahren vorstellen:

  • den Content Cache
  • den Templateblock Cache

Beide Verfahren sorgen dafür, dass zeitaufwändige Aufgaben nicht unnnötigerweise mehrfach ausgeführt werden. Das Ergebnis wird gecacht und der nächste Nutzer erhält gecachte Daten.

Im Grunde genommen ist es sehr einfach, diese beiden Verfahren zu unterscheiden:

  • der Content Cache wird verwendet, um Inhalte (eZ Dokumente) zu cachen. Der Cache optimiert die mit der Template Anweisung {module_result.content} ausgebenen Inhalte (es gibt einige Ausnahmen, die ich mal später beschreibe).
  • Template Block Cache optimiert die Ausgabe ausserhalb des module_result.content Bereichs! D.h. dieser Cache wird hauptsächlich im Pagelayout und dort verwendeten sub Templates genutzt.

Jeder, der diesen Unterschied beherzigt, wird mit dem Caching wunderbar schnelle eZ Seiten erhalten und auch die meisten Caching Fallen umgehen.
Der Contentview Cache ist sehr einfach einsetzbar: Sobald ViewCaching eingeschaltet ist, ist der Cache aktiv. Die Cache Daten werden im var Verzeichnis gespeichert.
Für den Templateblock Cache ist etwas mehr Arbeit notwendig. Daher widme ich diesem Thema einen eigenen Artikel. Beim nächsten Mal werde ich den Templateblock Cache genauer vorstellen.

Frank Dege

Ich bin seit mittlerweile fast 30 Jahren online (irgendwann hieß das ja mal BTX) und beschäftige mich schon fast genauso lange mit dem Thema elektronischer Handel. Schon im Rahmen meiner Diplomarbeit an der TU Berlin haben wir im Team einen Online-Shop entwickelt und automatische Test-Verfahren für Online-Anwendungen entworfen. Nach der Gründung der eigenen Firma im Jahr 2000 ging der Fokus noch stärker auf das Thema Onlineshops, hier bereits früh im Zusammenspiel mit einem ERP-System. Für silver.solutions verantworte ich federführend die Architektur und Produktstrategie unserer eigenen Onlineshop-Software silver.e-shop. Wir nutzen seit 2003 eZ Publish als Plattform für unseren Shop und ich bin immer noch absolut überzeugt davon, dass es das leistungsfähigste CMS überhaupt ist. Das sagen andere über Frank: Trendforscher /// immer neugierig auf neue Entwicklungen /// wenn er nicht programmiert, dann tischlert er.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.