Typo3 - Performance optimieren
http://t3n.de/magazin/23-tipps-tricks-schnelleres-typo3-typo3-turbo-edition-225282/3/
TYPO3 ist leider nicht besonders Performant im Vergleich vieler CMS. Aber man kann viel machen um das zu verbessern. Auf der anderen Seite MUSS man auch aufpassen, das es keine Performance Killer in der Installation gibt. Die Auswirkungen sind extrem z.B. wenn nicht gecachet wird.
Performance und Serverlast testen
einfache Tools
- Rootkonsole: uptime (zeigt Serverauslastung an)
- ApacheBench (simuliert Zugriffe ab -n 100 -c 10 http://www.IhreDomain.de/“. Dies simuliert 100 Zugriffe, davon jeweils 10 parallel );
- YSlow Plugin für FF oder ähnliches
- Google Webdeveloper Tools für den Check der Seite direkt (Requests, Bilder...)
Performance Killer Faktoren
- USER_INT Objekte verhindern Browserseitiges Caching
- indexed search
Fehler finden
Parsetime und Cachezustand von Seiten im Quelltext anzeigen: localconf.php (in /typo3conf)
$TYPO3_CONF_VARS['FE']['debug'] = '1';
Datenbank
Oft ein Engpass wenn es Slow Queries gibt. Die Server begrenzen die Zugriffe meist auf 25-35 parallel. Wenn man einmal an die Grenze kommt schaukelt sich das ganz schnell hoch. Was ist wichtig.
Alles utf-8 ?
- Auch die Datenbank selbst sollte auf utf-8 stehen, nicht nur die Tabellen (CREATE DATABASE DEFAULT CHARACTER SET uft8)
- Zur Vorsicht kann man TYPO3 zwingen: Install Tool:
[BE][forceCharset] = 'utf-8'
- PHP zwingen nicht intern in ISO-8859-1 umzuwandeln (und zurück)
[SYS][setDBinit] ='SET NAMES utf8; SET SESSION character_set_server=utf8'; SET CHARACTER_SET utf8;
Todo check ob SET SESSION character_set_server=utf8'; SET CHARACTER_SET utf8; das gleiche ist es gibt Angaben mit dem einen oder dem anderen
Keine Permanente Datenbankverbindung
Ist leider per default gesetzt. Also:
[SYS][no_pconnect] =1
setzen
Komprimierte Seitenübertragung einschalten
[BE][compressionLevel] = 5 und [FE][compressionLevel] = 5
Generierung der Seiten benötigt mehr Zeit, dafür schnellere Übertragung. Gut wenn das Caching funktioniert. Benötigt zlib auf dem Server (ist normalerweise dabei)
Extensions prüfen
Unbenutzte Extensions entfernen
Auch wenn sie nicht verwendet werden benötigen nicht genutzte Extensions wertvolle Rechenzeit. Es müssen Klassen geladen und initialisiert oder statische Templates geladen werden, die man gar nicht benötigt. Extensions können im Extension-Manager im Bereich „Install Extensions“ gelöscht werden, indem man auf den Namen der Extension klickt, oben aus dem Pulldown-Menü den Eintrag „Backup/Delete“ wählt und anschießend auf den Link „DELETE EXTENSION FROM SERVER“ klickt.
Indexed Search
„indexed_search“ hat einen erheblichen Nachteil. Durch die Verwendung der Extensions sinkt die Performance bei steigenden Seitenzahlen nahezu exponentiell.
Will man den selben (und sogar noch einen viel mächtigeren) Leistungsumfang verwenden, kommt man an „Apache Solr“ [3] nicht mehr vorbei. Wem ein geringerer Leistungsumfang reicht, kann „mnogosearch“ oder „joh_advbesearch“ verwenden.
Static File Cache
Typo3 erzeugt trotz Caching jedesmal einige Datenbank Anfragen
- früher fl_staticfilecache
- Problem -> kein idealer Code (x-classes, looping constructions), muß von Hand angestoßen werden, Modul
- Gut -> über mod_rewrite um zu entscheiden ob statisch oder dynamisch (kein php, schnell)
- wir müssen Cache Headers senden -> deshalb berauchen wir Seiten in Filesystem ?
Wir müssen Headers senden.
Rewrite Conditions:
Browser Cache
Typo3 den Browser mittels Header Information anweisen die Seite zu Cachen. config.sendCacheHeaders = 1
Die Cache Headers werden von Typo3 gesendet, wenn bestimmte Bedingungen erfüllt sind:
ToDo...
Server und Datenbank optimieren
http://wiki.typo3.org/index.php/Performance_tuning#Webserver_proxy_caching_or_static_file_caching
==
Typo3 - Welche Datenbanktabellen können gelöscht werden ?
(aus dem Forum...)
The answer more or less confirmed what I had listed myself in the german list. Thread in german list has the following Subject
- [Typo3-german] Restore: ueberfluessige/unwichtige Tabellen*
Nice tip also to get around timeout when restoring database via PhpMyAdmin. --> *More Infos: * http://www.ozerov.de/bigdump
- So you don't have to look (here the german answer):*
Alle Tabellen mit *cache_** kannst du ignorieren (solange die Tabellen an sich auf Maschine B vorhanden sind.
- Sys_log *ist das Interne Logging von Typo3.
Zum Aufspüren von fehlern ganz praktisch - deine Entscheidung, ob du das mitnehmen willst.
- Sys_history *ist die Änderungs-Verlauf der Objekte in Typo3 - auch hier
wieder deine Entscheidung
- Sys_stat *ist der übliche Killer.
die Ext lohnt sich meiner Meinung nach nur dann, wenn man keinen Zugriff auf Webserver Logs hat. Oder der Kunde einfache Statistiken direkt im BE sehen möchte. Hierzu kann ich nur empfehlen, einmal pro Monat einen CRON Job laufen zu lassen (oder von Hand) der alle Datensätze exportiert, die älter als 2 Monate sind (mit mysqldump --where) und danach die exportierten Daten zu löschen. sys_stat wächst schnell auf zig Millionen Records an und lähmt damit die DB. Wir hatten vor 3 Wochen den Fall, dass sys_stat so groß war, dass wir es nicht mehr selected konnten, noch exportieren oder gar löschen. Blieb also nur der Weg "DB runterfahren, Datendatei löschen, DB hochfahren"