Scriptindex.de

[ Menü ]

Home
News
Scripts
Neuzugänge
Suchen
Bücher
Manuals

[ Inhalt ]

Script eintragen
Tutorial eintragen
Newsletter
Umfragen
Link zu uns
Werbung bei uns
Kontakt
Impressum

[ Statistik ]

Hits gesamt: 5200131
Hits Heute: 828
max. Hits (10.07.07): 6964
User Online: 31
Scripts: 2828

[ Partner ]

CodeBase
I.S.U.M.
LUG Bayreuth
PEAR NEWS
PHP Classes

[ Facebook ]

[ Eigene Domain? ]

[ Buchtipp ]

XHTML und HTML. Die Sprachen des Web. Lehrgang und Referenz
XHTML und HTML. Die Sprachen des Web. Lehrgang und Referenz

Manuals > Smarty > Die Ausgabe von cachebaren Plugins Kontrollieren

14.4. Die Ausgabe von cachebaren Plugins Kontrollieren

Seit Smarty-2.6.0 kann bei der Registrierung angegeben werden ob ein Plugin cached werden soll. Der dritte Parameter für register_block, register_compiler_function und register_function heisst $cacheable, der Standardwert ist TRUE, was in Smarty vor Version 2.6.0 üblich war.

Wenn ein Plugin mit $cacheable=false registriert wird, wird er bei jedem Besuch der Seite aufgerufen, selbst wenn die Site aus dem Cache stammt. Die Pluginfunktion verhält sich ein wenig wie insert.

Im Gegensatz zu werden die Attribute standartmässig nicht gecached. Sie können das caching jedoch mit dem vierten Parameter $cache_attrs kontrollieren. $cache_attrs ist ein Array aller Attributnamen die gecached wertden sollen.

Beispiel 14-10. Preventing a plugin's output from being cached

index.php: require('Smarty.class.php'); $smarty = new Smarty; $smarty->caching = true; function remaining_seconds($params, &$smarty) { $remain = $params['endtime'] - time(); if ($remain >=0) return $remain . " second(s)"; else return "done"; } $smarty->register_function('remaining', 'remaining_seconds', false, array('endtime')); if (!$smarty->is_cached('index.tpl')) { // objekt $obj aus datenbank dem template zuweisen $smarty->assign_by_ref('obj', $obj); } $smarty->display('index.tpl'); index.tpl: Time Remaining: {remain endtime=$obj->endtime}

Der Wert von $obj->endtime ändert bei jeder Anzeige der Seite, selbst wenn die Seite gecached wurde. Das Objekt $obj wird nur geladen wenn die Seite nicht gecached wurde.

Beispiel 14-11. Verhindern dass Template Blöcke gecached werden

index.php: require('Smarty.class.php'); $smarty = new Smarty; $smarty->caching = true; function smarty_block_dynamic($param, $content, &$smarty) { return $content; } $smarty->register_block('dynamic', 'smarty_block_dynamic', false); $smarty->display('index.tpl'); index.tpl: Page created: {"0"|date_format:"%D %H:%M:%S"} Now is: {"0"|date_format:"%D %H:%M:%S"} ... do other stuff ...

Um sicherzustellen dass ein Teil eines Templates nicht gecached werden soll, kann dieser Abschnitt in einen ... Block verpackt werden.


Copyright 1998 - 2009 by I.S.U.M.