mirror of
https://github.com/yiisoft/yii.git
synced 2026-03-14 12:06:54 +01:00
49 lines
2.1 KiB
Plaintext
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>
|