Files
yii/docs/guide/de/caching.dynamic.txt
2009-03-01 01:32:35 +00:00

49 lines
2.1 KiB
Plaintext

Dynamische Inhalte
==================
Wir kommen beim Cachen eines [Seitenabschnitts](/doc/guide/caching.fragment) oder
einer ganzen [Seite](/doc/guide/caching.page) oft in Situtationen, bei denen
der Inhalt, abgesehen von einigen wenigen Stellen, relativ statisch bleibt.
Eine Hilfeseite kann zum Beispiel statische Hilfetexte sowie oben den
gerade angemeldete Benutzer anzeigen.
Wir könnten in diesem Fall den Cache-Inhalt entsprechend dem angemeldeten
Benutzer variieren, würden damit aber viel von unserem wertvollen
Cache-Speicher verschwenden, da außer dem Benutzernamen der meiste
Inhalt immer gleich bleibt. Wir könnten die Seite auch in mehrere Seitenbereiche
unterteilen und diese individuell speichern. Aber das würde den View
komplizierter und unseren Code komplexer machen. Einen besseren Ansatz verfolgt
das CController-Feature der *dynamischen Inhalte*.
Ein dynamischer Inhalt steht für einen Bereich in der Ausgabe, der nicht
gecacht werden soll, selbst wenn er in einen gecachten Seitenabschnitt
eingebettet ist. Damit dieser Inhalt dynamisch bleibt, muss er jedesmal
neu erzeugt werden, selbst wenn der umhüllende Inhalt aus dem Cache geliefert
wird. Aus diesem Grund ist es erforderlich, dass dynamischer Inhalt von einer
Methode oder einer Funktion erzeugt wird.
Um dynamischen Inhalt einzufügen, rufen wir [CController::renderDynamic()] an
der gewünschten Stelle auf:
~~~
[php]
...Anderer HTML-Inhalt...
<?php if($this->beginCache($id)) { ?>
...Zu cachender Seitenabschnitt...
<?php $this->renderDynamic($callback); ?>
...Zu cachender Seitenabschnitt...
<?php $this->endCache(); } ?>
...Anderer HTML-Inhalt...
~~~
`$callback` bezieht sich oben auf einen gültigen PHP-Callback. Dies kann ein
String mit dem Namen einer globalen Funktion oder einer Methode in der aktuellen
Controller-Klasse sein. Es kann auch ein Array sein, der sich auf eine
Klassenmethode bezieht. Alle weiteren Parameter von
[renderDynamic()|CController::renderDynamic()] werden an den Callback
weitergegeben. Der Callback sollte den dynamischen Inhalt zurückliefern, statt
ihn auszugeben.
<div class="revision">$Id: caching.dynamic.txt 163 2008-11-05 12:51:48Z weizhuo $</div>