Hallo Michael,

Am 12.03.2016 um 08:51 schrieb Michael Kasten:
Hallo Dieter,

Am 11.03.2016 um 23:36 schrieb Dr. Dieter Porth:
Hallo Michael,

die Fluid-Variablen habe ich in meinen letzten Aufsetzungen nie benutzt.
Dann wird es aber schwer die Frage zu beantworten :)
Stimmt. Aber vor drei Jahren, als ich mit TYPO3 anfing, habe ich sie benutzt. ich empfand sie aber als unübersichtlich. Es ist aber einfach schöner, wenn man das HTML möglichst nur im Template findet und möglichst wenig HTML ins TypoScript auslagert. (Insbesondere aber auch, weil TypoScript auch nicht sehr debug freundlich ist. ;-) )

Zur Performance:  Ich rechne über'm dicken Daumen geschätzt mit 80 bis 150ms 
pro Partialaufruf.
Solange die Zahl der Partials pro Seite  gut unter 50 bleibt, ziehe ich den 
systematischen Aufbau
der Fluid-Templates dem TypoScript-Gefrickel vor, selbst wenn das Typoscript um 
einiges schneller
ist.
Hast du in Bezug auf die Zeiten entsprechende Erfahrungswerte gemacht oder gibt 
es dazu irgendwelche
Quellen?
Ja. Ich hatte mal eine längtere größere Liste ausgegeben, die viele Partials (über 500) benutzte, welche ihrereseits einige Viewhelper noch nutzten. Daher die Erfahrungswerte von 80-150ms. Explizite systematische Messungen und standardisierte Benchmark-Tests habe ich allerdings nie gemacht.
Droht die Zahl der Partialaufrufe pro Seitenaufruf auf über 50 zu steigen, ist 
zu überlegen, ob
man nicht mit einem eigenen Service die Daten direkter zusammenstellt oder ob 
man nicht eine
Extension mit geeigneten Datenstrukturen anlegt. In diesem Fall ist 
eigenständiges Programmieren
meist performanter als die TypoScript-Lösung
Ich denke das kommt auf den Anwendungsfall an, bei 50 Partials je Seite wäre 
ich wahrscheinlich eher
geneigt meine Templatestruktur einzudampfen. Wenn ich mal 100ms je Partial bei 
durchschnittliche 30
Partials annehme (ich müsste mal durchtesten was in unseren Projekten da so im 
Schnitt verwendet
wird) dann habe ich ja schon stattliche 3 Sekunden nur für das Templating bei 
einer Seite die nicht
aus dem Cache kommt, da kann man ja mal drüber reden.
Da stimme ich dir zu. 50 Partials kommen zum Beispiel schnell zustande, wenn man Schleifen nutzt.
Bei der Wahl zwischen TypoScript und Fluid-Templates ist die Frage nach der 
Performance eher
kontraproduktiv. Wichtigere Kriterien sind meines Erachtens Übersichtlichkeit, 
Lesbarkeit und
natürliche Datenstrukturen
Deine Kriterien setze ich einfach mal bei einer Projektumsetzung voraus, 
beantworten aber leider
auch nicht die Frage ob es Differenzen zwischen den beiden hinterfragen 
Einbindungsmethoden gibt und
ich verstehe auch nicht warum eine Frage nach der Performance als 
kontraproduktiv zu werten ist?
Sie ist nicht kontraproduktiv. Ich würde das Kriterium nur nicht an die erste Stelle setzen. Wenn Performance kritisch wird, dann gibt es viele andere Stellschrauben, an welchen man zuerst drehen sollte, denke ich. Man kann die Infrastruktur optimieren (Verteilter Server, Image-Server, Varnisch, ...) oder man speckt das template ab. Mehr Javascript auf der Seite (AJAX, dynamische Layouts + JSON, ...)

Offensichtlich war meine Fragestellung doch sehr unklar, mir geht es ja nicht 
um die Frage wo ich
Funktionalitäten umsetze (also in deinem Beispiel ob ich das Menü in TS 
erstelle und anschließend
einbinde oder alternativ direkt ein Fluidmenü benutze)

Sondern ob es Erfahrungen gibt hinsichtlich von Performanceunterschieden bei 
der Verwendung von
Fluidtemplate variables oder von TS lib Objekten innerhalb von Fluid.
Im obigen Project habe ich dann die Datensätze (500) per Controller direkt in eine Variable schreiben lassen und diese dann im Extensiontemplate per f-Viewhelper gerendert. Dies kommt der Zuweisung im Fluid-Template sehr nahe und war damals ein echter Performance-Sprung.

Folgendes zur Überlegung:
Nach meinen Erfahrungen und meinem Bild im Kopf ist das Ausgabereultat eine Scriptes in TypoScript immer ein String. Die Übergabe eine Strings an eine Template-Variable ist ein Zuweisungsvorgang Jeder Viewhelper ist dagegen als Klasse definiert. Die Nutzung von Klassen bringt im Vergleich zu einer Zuweiisung immer einen bürokratischen Overhead mit sich. (Klasseninstanzierung, Methodenaufrufe, ...).

Auszug aus einer Cache-Datei aus dem typo3temp-Ordner. (Ich vermute, dass $currentVariableContainer auch die zugewiesenen Template-Variablen enthalten könnte - habe es aber nicht getestet.)

/**
 * Main Render function
 */
public function render(\TYPO3\CMS\Fluid\Core\Rendering\RenderingContextInterface $renderingContext) {
$self = $this;
$currentVariableContainer = $renderingContext->getTemplateVariableContainer();

$output0 = '';
// Rendering ViewHelper TYPO3\CMS\Fluid\ViewHelpers\Format\HtmlspecialcharsViewHelper
$arguments1 = array();
$arguments1['value'] = \TYPO3\CMS\Fluid\Core\Parser\SyntaxTree\ObjectAccessorNode::getPropertyPath($currentVariableContainer->getOrNull('menu'), 'label', $renderingContext);
$arguments1['keepQuotes'] = false;
$arguments1['encoding'] = NULL;
$arguments1['doubleEncode'] = true;
$renderChildrenClosure2 = function() {return NULL;};
$value3 = ($arguments1['value'] !== NULL ? $arguments1['value'] : $renderChildrenClosure2());

$output0 .= (!is_string($value3) ? $value3 : htmlspecialchars($value3, ($arguments1['keepQuotes'] ? ENT_NOQUOTES : ENT_COMPAT), ($arguments1['encoding'] !== NULL ? $arguments1['encoding'] : \TYPO3\CMS\Fluid\Core\Compiler\AbstractCompiledTemplate::resolveDefaultEncoding()), $arguments1['doubleEncode']));

$output0 .= ' <select class="form-control t3-js-jumpMenuBox" name="';
// Rendering ViewHelper TYPO3\CMS\Fluid\ViewHelpers\Format\HtmlspecialcharsViewHelper
...

Mit besten Grüßen
    Dieter



_______________________________________________
TYPO3-german mailing list
TYPO3-german@lists.typo3.org
http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german

Antwort per Email an