Rolf B: Pro/Contra Smarty

Beitrag lesen

Hallo ursus,

Smarty cacht.

Ja, aber anders als Du meinst, und jein, Smarty compiliert. Es übersetzt das Smarty-Markup in PHP und führt dann das PHP aus.

Wenn man also $tpl->display("foo.tpl") aufruft, dann guckt Smarty im Compilat-Ordner nach einer Datei namens "%%17^175^17524F68%%foo.tpl.php" (oder so) und guckt, ob die neuer ist als foo.tpl. Wenn ja, wird einfach nur die vorhandene PHP Datei includiert. Andernfalls läuft der Compiler an und erzeugt das Compilat neu.

Das Ergebnis kann dann von Bytecode-Caches gecached werden.

PROBLEM BEI DER SACHE: Man muss seiner Webanwendung erlauben, Code zu generieren und diesen generierten Code auszuführen. Das ist ein Sicherheitsrisiko und sollte nur in Testumgebungen gemacht werden. In Smarty 3 gibt es die compileAllTemplates-Methode; damit kann man sicherstellen, dass alle Templates übersetzt sind und auf der produktiven Webseite nicht compiliert werden müssen.

Caching in Smarty ist etwas anderes. Man kann einschalten, dass der Output eines Templates teilweise oder vollständig in einer Datei gespeichert wird, und bei erneutem Abruf aus der Datei geholt wird. Bei Templates die längere Render-Zeit haben, sich aber nur marginal ändern, kann das viel Zeit sparen.

Rolf

--
sumpsi - posui - clusi