[TYPO3-german] Wie entdecke ich Performance-Flaschenhälse einer Typo3 Seite?
Stefan Franke
stefan.franke at gmx.co.uk
Mon Apr 8 12:17:52 CEST 2013
Hallo Konrad,
solche langen Ladezeiten hatten wir auch mal. Bei uns war tt_news der Übeltäter (viele Kategorien, >50.000 Artikel). Bis wir da allerdings draufgekommen sind, haben wir an allen Ecken und Enden versucht, TYPO3 zu optimieren. Dabei ist folgende Liste entstanden. Ich übernehme keine Garantie, dass das alles sinnvoll ist, aber vielleicht hilft dir ja der eine oder andere Tipp...
---------------------------------------------
*) versionNumberInFilename aktivieren
Im Install Tool kann festgelegt werden, ob externe JS- und CSS-Dateien die filemtime als Querystring angehängt bekommen oder ob die filemtime im Dateinamen eingefügt wird.
$TYPO3_CONF_VARS['BE']['versionNumberInFilename'] = '1'
$TYPO3_CONF_VARS['FE']['versionNumberInFilename'] = 'embed'
---------------------------------------------
*) fehlendes Favicon
Falls im Access Log das Favicon mit einer 404-Fehlerseite aufscheint, dann wirkt sich das negativ auf die Performance aus, da jedesmal diese 404-Seite geladen wird.
---------------------------------------------
*) MySQL: Slow Query Logging
Das slow_query_logging in my.cnf aktivieren und die SQL Statements entsprechend optimieren.
---------------------------------------------
*) Browsercaching über htaccess aktivieren
<FilesMatch "\.(js|css|png|jpg|gif|swf)$">
<IfModule mod_expires.c>
ExpiresActive on
ExpiresDefault "access plus 7 days"
</IfModule>
FileETag MTime Size
</FilesMatch>
---------------------------------------------
*) exec_SELECTquery vermeiden
Stattdessen exec_SELECTgetRows verwenden, da man sich hier nicht um das Schließen der Datenbankverbindung kümmern muss. Liefert praktischerweise ein Array mit den Ergebnissen zurück.
---------------------------------------------
*) Logging deaktivieren
$TYPO3_CONF_VARS['SYS']['enableDeprecationLog'] = '0';
$TYPO3_CONF_VARS['SYS']['displayErrors'] = '0';
$TYPO3_CONF_VARS['SYS']['systemLog'] = '';
$TYPO3_CONF_VARS['SYS']['systemLogLevel'] = '';
$TYPO3_CONF_VARS['BE']['allowDonateWindow'] = '0';
$TYPO3_CONF_VARS['SYS']['errorHandlerErrors'] = '0';
$TYPO3_CONF_VARS['SYS']['exceptionalErrors'] = '0';
$TYPO3_CONF_VARS['SYS']['syslogErrorReporting'] = '0';
$TYPO3_CONF_VARS['SYS']['belogErrorReporting'] = '0';
---------------------------------------------
*) TSFE Änderungen aus Extensions heraus vermeiden
Änderungen am TSFE (z.B. additionalHeaderData) sollten so weit wie möglich vermieden werden.
---------------------------------------------
*) substituteMarkerArrayCached vermeiden
Quelle: http://www.dmitry-dulepov.com/2008/07/why-subtitutemarkerarraycached-is-bad.html
---------------------------------------------
*) Hooks nur wo notwendig ausführen
Prüfen, ob diese auch nur in der notwendigen Ansicht (z.B. SINGLE) ausgeführt werden --> t3lib_div::devLog()
---------------------------------------------
*) set_no_cache vermeiden
Diese Funktion darf aus einer Extension nicht aufgerufen werden!
---------------------------------------------
*) Garbage Collection Scheduler Task (Caching Framework)
Falls das Caching Framework zum Einsatz kommt, sollte auf jeden Fall die Scheduler Task zur Garbage Collection aktiviert werden und einmal am Tag (bzw. idealerweise in der Nacht) ausgeführt werden.
---------------------------------------------
*) tt_news XML Caching aktivieren
plugin.tt_news.displayXML.xmlCaching = 1
---------------------------------------------
*) rel="nofollow"
In Kalender-Extensions rel="nofollow" zum Link hinzufügen, damit der Cache nicht unnötigerweise vollgestopft wird.
---------------------------------------------
*) Böse und unnötige Bots aussperren
Über die Datei robots.txt können Bots, die sich nicht an die Anweisungen aus robots.txt halten, ausgesperrt werden.
User-agent: BLP_bbot/0.1
Disallow: /
Finden kann man solche Bots, wenn man das Access Log entsprechend filtert:
tail -f access_log | grep bot | grep -viE 'Googlebot|bingbot'
---------------------------------------------
*) Frequenz von GoogleBot anpassen
Das der GoogleBot für ziemlich viel Traffic sorgen kann, ist es ratsam, die Besuchsfrequenz über die Google Webmaster-Tools anzupassen.
---------------------------------------------
*) Analyse Werkzeuge
Um die Geschwindigkeit einer Webseite festzustellen und eventuell Vorschläge zur Verbesserung zu machen, gibt es einige Werkzeuge:
YSlow (auch als FireFox-AddOn)
PageSpeed (auch als FireFox-AddOn)
www.gtmetrix.com
---------------------------------------------
*) RealUrl Cache löschen
Um den RealUrl Cache gleichzeitig mit dem Seitencache zu löschen, muss folgender Code in die localconf.php eingetragen werden.
// Begin: RealURL Cache
$TYPO3_CONF_VARS['SC_OPTIONS']['t3lib/class.t3lib_tcemain.php']['clearAllCache_additionalTables']['tx_realurl_urldecodecache'] = 'tx_realurl_urldecodecache';
$TYPO3_CONF_VARS['SC_OPTIONS']['t3lib/class.t3lib_tcemain.php']['clearAllCache_additionalTables']['tx_realurl_urlencodecache'] = 'tx_realurl_urlencodecache';
$TYPO3_CONF_VARS['SC_OPTIONS']['t3lib/class.t3lib_tcemain.php']['clearAllCache_additionalTables']['tx_realurl_pathcache'] = 'tx_realurl_pathcache';
// End: RealURL Cache
---------------------------------------------
*) Sparsam sein mit TypoScript-Conditions
Conditions können sehr viele Cache-Einträge erzeugen, womit die Cache-Hit-Ratio sinkt.
---------------------------------------------
*) Linux Speicherkapazität abfragen
Große Dateien finden: ls -lahS $(find /var/www/vhosts/computerwelt.at/httpdocs/ -type f -size +5000k)
verfügbaren Festplattenspeicher ermitteln: df -h
Arbeitsspeicher anzeigen: free -m
---------------------------------------------
Gruß,
Stefan
More information about the TYPO3-german
mailing list