Caching?
Ich grab das mal wieder aus, weil... mir liegt da was auf dem Herzen:
Template:
Kompiliertes Template
Ausgabe mit
Lustiges Klicken auf die beiden Links ändert auch - wer hätt's gedacht - die letzte Zeile der Ausgabe, da ein anderes Subtemplate eingebunden wird
Aber...
Ausgabe mit
Erzeugt im Cacheordner ein Abbild des Templates, so wie es ausgegeben wird. Wenn ich jetzt innerhalb voon 5 Sekunden auf die Links klicke, wird kein anderes Subtemplate eingebunden.
Ich müsste also in der gecachten Version die generierte Ausgabe speichern, aber das Einbinden von Subtemplates soll nicht gecacht werden. Es sollte also so aussehen:
Das bekomme ich auch ohne Probleme hin, problematisch wird es allerdings
dann, wenn ich Subtemplates in einer Schleife einbinde und das Subtemplate mit den Werten, über die iteriert wird, arbeitet. In so einem Fall dürfte ich die komplette Schleife nicht cachen.
Lohnt es sich, den Aufwand zu betreiben und wenn ja, wie würdet ihr da rangehen?
Kurzes Beispiel:
wird zu:
Wenn ich das cache und der Benutzer innerhalb der "Cachelebenszeit" einen anderen Eintrag im Formular auswählt, sieht es für ihn so aus, als würde ich die falschen Subtemplates einbinden, hier bringt es mir also nichts, nur das $this->fetch nicht zu cachen, ich müsste die komplette Schleifen außen vor lassen
Ich grab das mal wieder aus, weil... mir liegt da was auf dem Herzen:
Template:
Code:
<ul> <li><a href="?param=wert1">Wert1</a></li> <li><a href="?param=wert2">Wert2</a></li> </ul> Zuletzt generiert: {now dateformat:"H:i:s"} {include _get.param default:"leer"}
PHP-Code:
<ul>
<li><a href="?param=wert1">Wert1</a></li>
<li><a href="?param=wert2">Wert2</a></li>
</ul>
<?php echo date("H:i:s"); ?>
<?php $this->fetch(
(!isset($_GET['param']) or $_GET['param'] === '') ?
"leer" :
$_GET['param'], true); ?>
PHP-Code:
$tpl->display('template.tpl');
Aber...
Ausgabe mit
PHP-Code:
$tpl->display('template.tpl', 5);
Ich müsste also in der gecachten Version die generierte Ausgabe speichern, aber das Einbinden von Subtemplates soll nicht gecacht werden. Es sollte also so aussehen:
PHP-Code:
<ul>
<li><a href="?param=wert1">Wert1</a></li>
<li><a href="?param=wert2">Wert2</a></li>
</ul>
14:20:23
<?php $this->fetch(
(!isset($_GET['param']) or $_GET['param'] === '') ?
"leer" :
$_GET['param'], true); ?>
dann, wenn ich Subtemplates in einer Schleife einbinde und das Subtemplate mit den Werten, über die iteriert wird, arbeitet. In so einem Fall dürfte ich die komplette Schleife nicht cachen.
Lohnt es sich, den Aufwand zu betreiben und wenn ja, wie würdet ihr da rangehen?
Kurzes Beispiel:
Code:
Inhalt des POST-Arrays:<br /> {loop at _post into post} {include post} <br /> {endloop}
PHP-Code:
Inhalt des POST-Arrays:<br />
<?php
foreach ($_POST as $post) {
$this->fetch($post, true);
?>
<br />
<?php
}
?>
Kommentar