Sonntag, 29. März 2009

Template Engine Smarty ist nicht mehr zeitgemäss

Smarty ist wohl die bekannteste Templateengine.
Die Frage die mich seit einiger Zeit beschäftigt - ist sie auch noch aktuell ?

Dazu muss man wissen was Smarty eigentlich macht.

  1. Man weist der Engine Variable und Inhalte zu
  2. Über ein Template, das ein Mix ist aus HTML und einer Smarty eigenen Scriptsprache ist, soll die Ausgabe erfolgen - es muss also ein Template erstellt werden und dazu muss man die Scriptsprache beherrschen,
  3. Dieses Template muss Smarty zunächst einmal aufbereiten - compilieren. Dazu muss es auch prüfen ob sich etwas an dem Template geändert hat.Es entsteht ein PHP Script.
  4. Die Anzeige erfolgt durch die Ausgabe des Templates, die Variablen (Platzhalter) werden durch die zugewiesenen Inhalte ersetzt.

Das funktioniert auch so weit gut.

Bei komplexen Systemen setzen sich die Inhalte aus diversen Inhaltslieferanten zusammen, die selbst widerum Templates nutzen und jedes für sich von Smarty verarbeitet werden muss, bevor das alles in dem Haupttemplate - Design der Seite - komplett zu Ausgabe kommt.

Wer einmal ein Profiling eines CMS mit Smarty gemacht hat, stellt erschrocken fest das 60 bis 80 % der gesamten Zeit nur für Smarty drauf geht - und das im wesentlichen nur um aus der eigenen Scriptsprache ein PHP - Script zu erzeugen.

Warum der ganze Umstand ?

PHP kann das alles und noch mehr direkt ?!

Trennung von Code und Design an diesem Punkt ist unsinnig, da PHP auf dem Lehrplan jeden angehenden Webdesigners steht und man mit PHP direkt mehr Möglichkeiten hat als mit Smarty selbst.

Das Problem bei komplexen Systemen besteht eben auch darin, das der Gesamtinhalt sich u.U. aus vielen kleinen Teilen zusammensetzt und diese Teile jeweils für sich verarbeitet werden müssen.

Über Plugins - das sind eigentlich normale ausgelagerte PHP- Funktionen, deren Funktionsname lediglich erweitert ist (aus bookmarks wird dann smarty_function_bookmarks) können diese kleinen Teile jeweils separat und mit eigenen Templates gewonnen werden.

Letzten Endes besteht die Endverarbeitung der insgesamt eingesetzten Komponenten aus dem mehrfachen Einsatz von PHP eval und mehr nicht.

Aber in komplexen System dauert das alles seine Zeit und verhält sich komplett anders als wenn man eine einfache Seite nimmt.

Tatsächlich kann man sich Smarty heute eigentlich nicht mehr leisten.

Die Anforderungen an modernen Websites , was den Inhalt betrifft sind sehr hoch.

Man kann es sich auch bei den heute möglichen Internetanbindungen nicht mehr leisten 0,2 bis über eine Sekunde an Generierungszeit zu opfern wovon Smarty den Löwenanteil bentöigt.

Ein Besucher der mit 20 oder 30 Mbit unterwegs ist merkt es sofort, wenn eine Seite an dieser Stelle eiert.

Und warum auch diesen ganzen Umstand ?
Warum soll man eine Smarty - Scriptsprache lernen wo man doch PHP kann ?
Warum muss ein Template compliert werden, kann man nicht einfach das aus der Compilierung entstehende Resultat gleich so aufschreiben und verwenden ?

Man kann !

Als Produkt dieser Überlegungen entstand die Templateengine TPLE, die ich selbst im praktischen Gebrauch habe und die bei vielen Anwendern sehr gut angekommen ist.

Keine Kommentare: