Performance-Optimierung für TYPO3 – Teil 1
Natürlich will man eine möglichst schnelle Auslieferung der Seite erreichen, um eine möglichst hohe Punktezahl bei PageSpeed Insights zu erreichen und im Ranking zu steigen. Aber natürlich auch das Usability für den Besucher zu steigern. Es gibt einige Faktoren, die eine Seitengenerierung verlangsamen. Darunter zählen:
Ein langsamer Server
Das TYPO3 System benötigt schlichtweg Rechenzeit. Steht diese nicht zur Verfügung, weil andere Prozesse auf dem Server die Ressourcen wegfressen, kann das TYPO3 System nicht zeitgerecht reagieren und ausliefern. Dies kann man teilweise umgehen, indem man mit Erweiterungen wie beispielsweise nc_staticfilecache arbeitet. Diese umgehen das TYPO3 System, indem Sie mit mod_rewrite und statisch generierten HTML Seiten arbeiten. Dies klappt aber immer nur dann, wenn die Inhalte nicht direkt just in time erzeugt werden müssen, anders als es beispielsweise bei Logins, Formularen oder sonstigen Erweiterungen der Fall ist. Bei diesen ist ein Caching entweder überhaupt nicht oder nur teilweise möglich.
Teilweise sind die Strukturen des Hosters unvorteilhaft, wenn beispielsweise die Datenbanken auf einem anderen System untergebracht sind. Der Weg, den die Daten durch das Netzwerk benötigen, ist verlorene Zeit.
Hohe Seitenanzahl
Je mehr Inhalte das System zu verwalten hat, desto langsamer die Datenbank und entsprechend die Abfragen. Es sollte daher öfters der Datenbankmüll entsorgt werden. TYPO3 stellt hierfür automatisierte Planer-Tasks zur Verfügung, die lediglich eingerichtet und aktiviert werden müssen.
Komplexes Template
Dieses Problem geht mit einer hohen Seitenanzahl einher. Jedes Element muss schließlich gerendert werden. Daher muss differenziert werden, was eingespart werden kann. Je mehr Sie cachen, desto mehr ungewollte Nebeneffekte können entstehen.
Beispiel:
Der Footer ist je nach Website schon einmal mit vielen Elementen bestückt, die dann jedes Mal mit gerendert werden müssen. Wenn sich der Footer selten ändert, können Sie daher hier problemlos mit dem Cache-ViewHelper arbeiten. Dieser bewirkt, dass der darin eingeschlossene Inhalt nicht mehr jedes Mal neu gerendert wird. Dies spart teilweise enorm viel Zeit. Aber Vorsicht: Es wird darin wirklich alles gechached. Interaktive Elemente haben somit nichts darin verloren.
Auch Menüs müssten theoretisch nicht immer neu gerendert werden. Deren Neuerstellung benötigt oft eine hohe Anzahl von Datenbankabfragen, die eigentlich eingespart werden könnten. Wäre da nicht die Sache, dass die derzeit aktive Seite jedes Mal neu als Klasse gerendert werden muss. Auch die Rootline im Menü muss entsprechend markiert werden. Dieses Problem kann man umgehen, indem man mit JavaScript arbeitet. Über die aktuelle Seiten-ID und entsprechenden Klassen kann man die Seite im Menü markieren. Ich persönlich würde diese Lösung in die Kategorie Workaround einordnen. Idealer wäre eine Lösung ohne JavaScript.
Generell muss darauf geachtet werden, dass die zusätzlich eingebauten Caches auch immer dann geleert werden, wenn es nötig ist. Darin besteht ebenso die Herausforderung.
Eigenheiten des T3Bootstrap Templates
Zur Besonderheit des TYPO3 Templates gehört die automatische Bildoptimierung. Diese ist notwendig, um die Bilder möglichst optimal für die einzelnen Anzeigestufen ausliefern zu können. Jedoch wird eine erhöhte Serverlast nur einmalig beim erstmaligen Aufruf der Seite, worin sich die Bilder befinden, in Anspruch genommen. Sind die Bilder einmal erstellt, werden diese nur noch verwendet.
Fazit
Es können teilweise einige Optimierungen durchgeführt werden. Aber man muss vorsichtig sein, dass sie nicht wiederum negative Auswirkungen haben.
Gerne kann ich eine Analyse für Ihr System erstellen. Sprechen Sie mich einfach an.