[TYPO3-german] TypoScript Verschachtelung und Performance

Christian Wolff chris at connye.com
Mon May 10 23:17:51 CEST 2010


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Am 10.05.2010 19:38, schrieb Ralf-René Schröder:
> 
>>
>> Da Du in keinem Fall ein COA_INT oder USER_INT verwendest, ist die
>> "Geschwindigkeit" genaugenommen irrelevant, denn üblicherweise landet
>> eine
>> solche Seite nach dem ersten Rendern im Cache und wird bei jedem weiteren
>> Request umgehend ausgeliefert.
> 
> OK, richtig... dann ergänzend genauer:
> da an der Stelle lib.modul jedes beliebige Element stehen könnte
> also auch die Ausgabe einer kompletten Extension die möglicherweise auch
> völlig ungecached laufen muß, wie wäre dann die Situation ?
> 
> mich interessiert ob durch eine solche prinzipielle Arbeitsweise
> unvertretbar hohe Performanceeinbußen entstehen...
> 
> ein modul (gefüllt mit was auch immer) in eine area kopieren (oder
> referenzieren)
> und diese areas dann in einen subpart/marker/tvObjectPath  kopieren
> (referenzieren)
> 
das gesamte typosscript wird erstmal in ein verschachtesltes array
geparsed.. wir reden also hier über die frage ist es wie kompiziert ist
es ein array zu kopieren.

== Variante A (mit Referenz) ==

$conf = array(
  "lib." => array(
    "modul" => "COA",
    "modul." => array(
      "10" => "TEXT"
      "10." => array(
        "value" => "test",
      ),
    ),
    "area" => "< lib.modul",
  ),
  "page." => array(
    "20." => array(
      "subparts." array(
        "mysubpart" = "< lib.area",
      ),
    ),
  ),
);

// hier ist zu beachten das die "referenzen" in wirklichkeit einfach nur
text elemente sind die später erst beim auslesen "verstanden werden um
dann einen korrekten lookup im array zu machen.

== Variante B (mit Kopie) ==
$conf = array(
  "lib." => array(
    "modul" => "COA",
    "modul." => array(
      "10" => "TEXT"
      "10." => array(
        "value" => "test",
      ),
    ),
    "area" => "COA",
    "area." => array(
      "10" => "TEXT"
      "10." => array(
        "value" => "test",
       ),
    ),
  ),
  "page." => array(
    "20." => array(
      "subparts" => "COA",
      "subparts"=> array(
        "10" => "TEXT"
        "10." => array(
          "value" => "test",
        ),
      ),
    ),
);

// wie man hier schon an der variante mit kopie sieht wird das array
durch das kopieren deutlich grösser. dafür entfallen ein paar zusätliche
lookups im array. ich denke im normal fall. ist es warscheinlich jacke
wie hose. die variante mit den referenzen ist speicher spaarender dafür
brauchts einen minimum mehr an zugriffen.
variante b braucht mehr speicher und dafür weniger zugriffe.

variante C ist das kompakteste von allem. aber schlecht wartbar.

es gibt noch eine letze variante D
dort verwendest du temp.* objekte und kopierst die daten. damit hast du
fast die gleiche wartbarkeit wie bei variante A&B du kannst deinen code
gut verteilen auf verschiedene templates.  aber da nach dem parsen ein
unset($conf['temp.']) aufgerufen wird. ist der speicherbrauch für die
nächsten rendering schritte nicht so hoch.

gruss chris

- -- 
Christian Wolff // Berlin
http://www.connye.com

some projects:
http://richtermediagroup.com | http://titanic.de |
http://fairplay-homepage.de
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (MingW32)

iEYEARECAAYFAkvod/8ACgkQIcCaXPh/JHH89ACfaxuluYGDJgyOCAFUyLok5gJA
zhgAnj4NnzquiXb6HfRXFnl9DIonKXTd
=JWkQ
-----END PGP SIGNATURE-----


More information about the TYPO3-german mailing list