Performance Optimierung

  • Thomas27 Thomas27
    Jedi-Ritter
    0 x
    144 Beiträge
    0 Hilfreiche Beiträge
    11. 02. 2012, 10:53

    Ich hab da mal ne Frage zur Performanceoptimierung von tt_news.

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

    1. ### News LATEST in right column
    2.  
    3. #default
    4. news >
    5. news = COA_INT
    6. news.5 = TEXT
    7. 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>
    8. news.10 < plugin.tt_news
    9. news.10 {
    10. code >
    11. code = LATEST
    12. pid_list >
    13. pid_list = 50 # the pids of the pages where your news are stored
    14. catImageMode = 0
    15. catTextMode = 0
    16. singlePid = 49
    17. #killt den wrapper <p>
    18. displayLatest.subheader_stdWrap.outerWrap = |
    19. archive = 0
    20. archiveTypoLink.parameter = 15
    21. sys_language_mode = strict
    22. }

    1. php/substituteMarkerArrayCached 1500 1 Cached from DB
    2. /Non-cached objects/Include 1501 0 +791 =791 [/Non-cached objects/Include /5][/Non-cached objects/Include /10]
    3. /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>
    4. /Non-cached objects/Include /10 USER 1501 790 +1 =791
    5. ...
    6. 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?


  • 1
  • lisardo lisardo
    Jedi-Meister
    0 x
    306 Beiträge
    0 Hilfreiche Beiträge
    11. 02. 2012, 13:28

    Hallo,

    Antwort: nein, kann man nicht. Und das ist kein Bug sondern ein Feature:

    [url=http://www.oliver-thiele.de/cms-typo3/tsref/cobjects/coa.html]COA / COA_INT[/url]

    Also nimm einfach COA statt COA_INT.

    Peter, [url=http://www.typo3-lisardo.de]TYPO3 @ lisardo (Augsburg)[/url]

  • Thomas27 Thomas27
    Jedi-Ritter
    0 x
    144 Beiträge
    0 Hilfreiche Beiträge
    11. 02. 2012, 15:38

    Danke lisardo, Gut zu wissen! Typo3 Grundkenntnisse!

    Aber:

    1. NEWS COA 1041 0 +612 =612
    2. [page.10.marks.NEWS.5][page.10.marks.NEWS.10]
    3. 5 TEXT 1041 0
    4. <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>
    5. 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 lisardo
    Jedi-Meister
    0 x
    306 Beiträge
    0 Hilfreiche Beiträge
    11. 02. 2012, 16:35

    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, [url=http://www.typo3-lisardo.de]TYPO3 @ lisardo (Augsburg)[/url]

  • Thomas27 Thomas27
    Jedi-Ritter
    0 x
    144 Beiträge
    0 Hilfreiche Beiträge
    11. 02. 2012, 17:14

    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!

  • 1