perfomance Tuning

TYPO3 Perfomance Tuning

Das Thema Perfomance hat nicht direkt etwas mit der Kapitelüberschrift "TYPO3 SEO" zu tun. Eine performante Website trägt aber sehr wohl dazu bei, bei Suchmaschinen besser gelistet zu werden und von den Besucher besser angenommen zu werden.

 

Auf diese Seite möchte ich mehrere kleine Massnahmen vorschlagen mit denen die Performance von TYPO3 Websites erhöht werden kann.

Meßgrundlage schaffen

Um die Perfomance zu optmieren, muss man sich erstmal klar machen wie es zur Zeit um die Perfomance der Webseite bestellt ist.

In diesem Abschnitt werde ich erstmal darauf eingehen wie wir den aktuellen Stand ermitteln können. In den späteren Abschnitten werde ich dann Schritt für Schritt darauf eingehen wie die aktuelle Situation verbessert werden kann.

 

Beim Darstellen einer TYPO3 Website gibt es mehrere Faktoren die die Perfomance beeinflussen.

 

1.) Da es sich bei TYPO3 um eine PHP Applikation handelt, hängt die Perfomace von der Ausführungsgeschwindigkeit der Skripte ab. Bei einem "shared Hoster" hat man darauf meisst keinen Einfluss.  Wenn man jedoch  über einen eigenen Webserver verfügt kann man beispielsweise einen "PHP Cache" installieren, der die Perfomance von PHP Skript deutlich verbessert, indem er Ergebnise der vorherigen ausführung von PHP Skripten zwischenspeichert.

 

Wenn man sich die Parsezeit und den Cachezustand einer Seite anschauen möchte, gibt es die Möglichkeit dies in der localconf.php (in /typo3conf) zu aktivieren. Dazu ist folgede Zeile einzufügen:

 

$TYPO3_CONF_VARS['FE']['debug'] = '1';

Alternativ kann die Debugausgabe auch über das TYPO3 Installtool aktiviert werden. Durch die Aktivierung des Debugmodus wird im HTML Quelltext der Webseiten ganz unten ein Kommentar eingefügt, das die Parsezeit der aktuellen Seite und, sofern vorhanden, den Cachezustand der Seite ausgibt. Die im Screenshot zu sehende Parsetime stammt von dieser Website auf einem vServer mit aktiviertem ionCube PHP Accelerator.

 

 

2.) Ein weiterer Faktor ist die Webseite an sich. Man sollte darauf achten das Grafiken nicht zu gross sind, und das man CSS und JavaScript möglichst in externe Dateien auslagert. Durch das Auslagern von CSS und JavaScript in externe Dateien, können diese externe Dateien vom Browser gecached werden.

Bei eingebetetem CSS oder JavaScript ist das nicht möglich. Ein Schritt zur Optmierung kann hier eine Serverseitige kompression sein, die der Apache Webserver unterstützt, TYPO3 unterstützt ebenfalls eine kompression, es sollte jedoch nur eine von beiden genutzt werden um nicht unnötig perfomance zu verschenken.

 

Eine gut Möglichkeit die Ladezeiten einer Webseite zu testen bietet das Tool unter folgendem Link. Es gibt zwar diverse andere Tools die angeblich die Ladezeit berechnen, oft werden dabei aber nicht per css eingebundene Bilder oder externe JavaScripts berücksichtigt.

Ein Test unserer Startseite hat eine gesamtgröße von 31 kb ergeben, was bei diesem Tool einer  Note von 1 entspricht.

Beschleunigung durch PHP Caches

PHP ist eine Skriptsprache. In der Regel werden Skripte bei jeder Anforderung neu geparst, ausgeführt und das Ergebnis ausgegeben. Da es zwischen der mehrfachen Ausführung oft garkeine Änderungen am Ergebnis gibt, ist es sinnvoll das Ergebnis eines ausgeführten PHP Skripts zwischen zu speichern.

 

PHP Caches haben es sich zur Aufgabe gemacht, dieses Problem optimal zu lösen. Es gibt einige kommerzielle und kostenlose PHP Caches.

 

Bei dynamicwebpages.de gibt es hierzu einen Artikel der einige PHP Caches vergeleicht.

 

Aus eigener Erfahrung kann ich von PHP Accelerator(ionCube) und eAccelerator berichten. Beide haben sehr gut Ergebnise gebracht. Die Parse Geschwindigkeit der PHP Skripts wurde im Schnitt mehr als verdoppelt.

 

Die Installation der beiden Accelerator ist relativ einfach und unter folgenden Links beschrieben:

PHP Accelerator

eAccelerator

Auslagerung von CSS und JavaScript

Um JavaScripts in eine externe Datei auszulagern gibt es die Möglichkeit, dies über TypoScript Code im Templatesetup zu machen. Folgender Eintrag sorgt für die Auslagerung des JavaScript 

 

config.removeDefaultJS = external

 

Wenn TYPO3 durch Extensions erweitert wird, bringen diese ein eigenes Default CSS Style mit, das beim Rendern der Seite in die Ausgabe eingebetet wird. Dies Ausgabe als eingebettetes CSS in der Seite erschwert jedoch das Cachen. Eine Möglichkeit dies zu verhinden, ist das Default CSS Style zu überschreiben mit leerem Inhalt und die CSS formatierung im globalen CSS des Templates vorzunehmen. Um ein Default Style zu überschreiben muss im Template folgender TypoScript Code für die jeweilige Extension eingefügt werden. Ich habe hier ein Beispiel für ein paar Extensions damit es klar wird:

 

 plugin.tx-srquiz-pi1._CSS_DEFAULT_STYLE = 
plugin.tx_chcforum_pi1._CSS_DEFAULT_STYLE =
plugin.tx_srfeuserregister_pi1._CSS_DEFAULT_STYLE =
plugin.tx_veguestbook_pi1._CSS_DEFAULT_STYLE =

Wenn einem der Ort der auslagerung egal ist, kann man auch folgenden TypoScript Setupcode verwenden:

 config.inlineStyle2TempFile = 1 

Dabei wird der InlineCode in eine temporäre Datei ausgelagert.

Serverseitige Kompression

TYPO3 bietet die Möglichkeit gerenderte Seiten zu komprimieren und komprimiert an den Aufrufer zu übertragen, dadurch kann eine Menge bandbreite gespart werden und der Seitenaufbau beschleunigt werden. Dies ist jedoch überflüssig wenn bereits das Apache Modul mod_defalte installiert wurde und läuft.

 

Dies Optionen zum komprimieren können über das TYPO3 Installtool (Tools -> Installation) im Bereich All Configuration oder direkt über die Datei /typo3conf/localconf.php gemacht werden.

 

 

Wie erwähnt kann können alternativ in der Dateie /typo3conf/localconf.php folgende Zeilen ergänzt werden:

 

 

 $TYPO3_CONF_VARS['FE']['compressionLevel'] = '3';    
$TYPO3_CONF_VARS['FE']['compressionDebugInfo'] = '1';

Durch die Aktivierung der compressionDebugInfo wird in der Webseite ein kommentar in der letzten Zeile eingefügt, die zeigt wie gut die Webseite im Endeffekt komprimiert werden konnte. Diese Option kann also später, wenn alles funktioniert, entfernt werden.

 

In der Debugausgabe des Frontends ist zu sehen das die Grösse von 15610 bytes auf 5357 bytes reduziert werden konnte was einer Erspanis von 66% entspricht.

Caching in statischen Files

Ein weiteren sehr intressanten Ansatz beim Caching stellt die Extension "fl-staticfilecache" von Tim Lochmüller dar.

Mit dieser TYPO3 Erweiterung ist es möglich, dass eine generierte Seite auf der Festplatte zwischen gespeichert wird. Bei Seiten deren Inhalt sich nicht so häufig ändert ist das eine Möglichkeit die Perfomance erheblich zu steigern.

Die Einrichtung der Extension beschreibt Tim auf einer für die Extension erstellte Seite:

 

http://typo3.fruit-lab.de/typo3-extensions/fl-staticfilecache.html

 

Nachdem die Extension eingerichtet wurde, ist erscheint in der TYPO3 Backendnavigation ein weiterer Menüpunkt.

Unterhalb dieses Menüpunkts kann im Backend bestimmt werden welche Seiten im statischen Cache gehalten werden sollen, dadurch ist es auch möglich einzelne Unterseiten wie z.b. Foren etc. vom Caching auszunehmen.

Die Extension befindet sich zwar noch im Alpha Stadium lief aber in ersten Tests problemlos.

Administration des static filecaches

Der Cache wird im Backend über einen eigene Menüpunkt administriert. Es kann für jeden einzelnen Seitenbehälter festgelegt werden ob er gecached werden soll oder nicht.

Navigation