[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