Cache

Dieses Codebeispiel speichert den Inhalt für 120 Sekunden, der Cache ist topic, Nutzer und Id abhängig, dies bedeutet, dass der Cache für Bereiche im eingeloggten Zustand unterschiedliche Ausgaben vorhalten kann. Die Ausgabe des tags wird in dem nachfolgenden Beispiel einmal generiert, in den darauf folgenden 120 sekunden antwortet der cache.
Der Cache schaltet sich im Backend automatisch ab, so das die im Backend erzeugten Ausgaben immer ungepuffert erfolgen

<ty:cache id="fullpage_cache" expire="120">
...
...
</ty:cache>

Unwirksamer Cache:

Auszug aus einem Template:

<ty:cache id="fullpage_cache" expire="120">
<?php
....
echo time();
...
?>
</ty:cache>

Erklärung: PHP-Bereiche werden vor Tag-Ausgaben geparst (dies ist zur Zeit nicht zu verhindern), daher ist der Cache für PHP-Scripte unwirksam und liefert stattdessen Falsche Ausgaben. Obwohl der Cache das vorgehaltene (veraltete) Resultat zurückliefert, wird das PHP Script dennoch ausgeführt.

Ausnahme:

// Schnipselcode:
<?php
....
echo time();
...
?>
// Templatecode:
<ty:cache id="area_cache" expire="120">
    <ty:area id="schnipsel_der_seite"/>
</ty:cache>

Der Cache schlägt an, wenn das PHP-Script innerhalb eines Schnipsels angegeben wurde, und die ty:Area, welche das Schnipsel ausgibt selbst gecacht wird, indiesem Fall wird auch die Ausgabe des PHP Scriptes gecacht. Ursache dieses Verhaltens ist die myty - Parsingengine. Zuerst wird der PHP-Code des Templates (durch PHP) geparst das Resultat dieses Prozesses wird an die myty Parsingengine gesendet. Danach werden alle übergeordneten ty-Tags durch die Module behandelt, danach die darin enthaltenen usw. bis zum letzten Iterationsschritt. Die Iterationshäufigkeit ist abhängig von der Verschachtlungstiefe der Tags. Das ty:cache Tag liefert hierbei jedoch das bereits zuvor ermittelte Resultat des enthaltenen Codes zurück.

Wirksamer Cache:

ein Cacheeintrag für jede Seite
<ty:cache id="navi-cache" expire="120">
<ty:nav>
...
</ty:nav>
</ty:cache>

Globaler Cache (auf allen Seiten gleich):
<ty:cache id="db-cache-tabelle" expire="120" topic="global">
<ty:db select="*" table="tabelle">
...
</ty:db>
</ty:cache>

Inhaltsabhängiger Cache:
Bitte beachten Sie, dass die Ermittlung, ob ein neuer Eintrag vorhanden ist
(und somit ein neuer Cacheintrag erstellt werden soll) nicht aufwändiger sein
darf als die eigentliche Abfrage selbst:
<?php $lastEntry = "datum der letzten News"; ?>
<ty:cache id="element-cache-<?php echo $lastEntry ?>" expire="10000000" topic="global">
<ty:db select="*" table="news">
...
</ty:db>
</ty:cache>

Aufbau des Cache-Schlüssels

Der Schlüssel, welcher zur Identifikation des Cacheeintrages genutzt wird, ist wie folgt aufgebaut: „*NutezrId*:*topic*:*language*:*id*“. In diesem Schlüssel können id und topic über die jeweiligen Parameter des ty:cache tags gesteuert werden, NutzerId und Sprache werden immer mit angehangen.

 
mytycache.txt · Zuletzt geändert: 2010/05/27 12:00 (Externe Bearbeitung)
 
Falls nicht anders bezeichnet, ist der Inhalt dieses Wikis unter der folgenden Lizenz veröffentlicht:CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki