Zum Inhalt springen

Performance Optimierung

Erstellt am 11. Februar 2012 · 4 Antworten · letzte Antwort am 11. Februar 2012

Tags: Frage

Thomas27 ·

Ich hab da mal ne Frage zur Performanceoptimierung von tt_news.

Auf meiner Startseite binde ich via typoscript die letzten drei Newsbeiträge ein:

### News LATEST in right column

#default
news >
news = COA_INT
news.5 = TEXT
news.5.value = <h5>NEWS</h5><div class="feeds"><a href="http://feeds2.feedburner.com/xxx" target="_blank"><img src="http://xxx.de/feed-icon-64x64.png" border="0" alt="xxx" /></a></div>
news.10 < plugin.tt_news
news.10 {
   code >
  code = LATEST
  pid_list >
  pid_list = 50 # the pids of the pages where your news are stored
  catImageMode = 0
  catTextMode = 0
  singlePid = 49
  #killt den wrapper <p>
  displayLatest.subheader_stdWrap.outerWrap = | 
  archive = 0
  archiveTypoLink.parameter = 15
  sys_language_mode = strict
}
php/substituteMarkerArrayCached 	 	1500 	1 	 	 	Cached from DB 
/Non-cached objects/Include 	 	1501 	0 	+791 	=791 	[/Non-cached objects/Include /5][/Non-cached objects/Include /10] 
/Non-cached objects/Include /5 	TEXT 	1501 	0 	 	 	<h5>NEWS</h5><div class="feeds"><a href="http://feeds2.feedburner.com/xxx" target="_blank"><img src="http://xxx/feed-xxxg" border="0" alt="xxx" /></a></div> 
/Non-cached objects/Include /10 	USER 	1501 	790 	+1 	=791 	
...
template ausgabe

Für diese 3 kleinen Beiträge braucht es aber 791 ms???? Kann ich irgendwie typo3 mitteilen, dass er sich diese 3 letzten Beiträge aus dem Cache holt?

Oder kann man generel COA_INT Objekten cachen?

Thomas27 ·

Danke lisardo, Gut zu wissen! Typo3 Grundkenntnisse!

Aber:

NEWS 	COA 	1041 	0 	+612 	=612 	
[page.10.marks.NEWS.5][page.10.marks.NEWS.10] 
5 	TEXT 	1041 	0 	 	 	
<h5>NEWS</h5><div class="feeds"><a href="http://feeds2.feedburner.com/xxx" target="_blank"><img src="http://image.mp3tht.de/feed-icon-64x64.png" border="0" alt="xxx" /></a></div> 
10 	USER 	1041 	611 	+1 	=612

Trotzdem verbrät eine Select Abfrage auf die letzten drei news Artikel 612ms???
Erscheint mir immer noch viel zu viel Zeit, für so eine einfache Abfrage.

lisardo ·

Da gebe ich dir prinzipiell schon recht ... aber das rauszubekommen ist nicht so simpel.

Ich vermute, dass es sich nicht nur um eine einzige SELECT-Anfrage handelt (obwohl das in dem Fall wohl möglich wäre). Prinzipiell steht hinter der LATEST-Ausgabe auch eine Katgeorien-Auswahl, die ihrerseits baumartig aufgebaut sind und in unendlicher Tiefe verschachtelt sein können. Die Kategorien sind über eine MM-Tabelle relational mit den Einträgen verknüft. Ausserdem müssen die enable-Felder (frontend-user, hidden, deleted, von / bis) berücksichtigt werden (und zwar in den Einträgen sowie in den Kategorien), die pid der Seite, auf der die Daten abgelegt wurden (wichtig für die mehrfache Verwendung der Extension im Seitenbaum) sowie der Sprachoverlay samt Fallback auf die Standardsprache abhängig von den Einstellungen in config. Ausserdem sollten die Workspaces und Versions berücksichtigt werden. Das ist schon mal keine "einfache" SELECT-Abfrage mehr ... :-)
Danach folgt das Parsen der RTE-Inhalte und der Rendering-Vorgang der Newsinhalte in die Templates und dann erst die nachgeordnete Verarbeitung durch die stdWrap-Einstellungen.
Also da hängt ganz schön was dran - und um das eigentliche Performance-Problem zu finden, muss man sich da durchdebuggen.
Dann ist in deinem kleinen Snippet noch was drin, nämlich der Link auf das Feedburner-Icon. Bist du sicher, dass du nicht eigentlich den Ladevorgang diese dieses Icons mißt? Der Abruf eines Icons über einen eigenen http-Requests hat eine relevante Dauer. Nimm mal alles raus, bis auch den reinen Output der News, dann wird es aussagekräftiger.

Peter, TYPO3 @ lisardo (Augsburg)

Thomas27 ·

Da hast du recht, es sind mehrere Selects, wenn ich mir die im AdminPanel anschaue. Aber selbst wenn ich meinen eigenen Krempel mal auskommentiere, also Icon, Archiv, Standard Wrapper komme ich immer noch auf stolze 632 ms. Die machen also den Braten nicht fett.

Gibt es vielleicht eine eigene Extension, die Performance orientiert z.B. wirklich nur die drei letzten News Beiträge ausgibt, ohne auf Kategorien etc. Rücksicht zu nehmen?

Die andere Alternative wäre natürlich sich gleich selbst ein kleines PHP Skript zu basteln, welche dann genau die Aufgabe übernimmt.

Aber auf jeden Fall Danke für die ausführliche Erklärung!