Michael Schröpl: CGI, SSI, und HTML::Template

Beitrag lesen

Hi myMojito,

Mein Knackpunkt war seither immer der folgende: Ich Lagere die komplette Funktionalität der "Nachrichten-Übersicht" in einem Modul aus, welches die darstellbaren Inhalte als Variable zurück gibt. Diese Varbialen übergebe ich mittels dem HTML::Template-Modul an meine HTML-Vorlage.

Daran mußt Du nichts ändern - nur bekommt die Struktur oberhalb von HTML::Template selbst wiederum mehrere Schichten.

Ändert sich jetzt die Datenstruktur. muss ich das Modul, mein Skript und die Vorlagen anpassen (wobei ich auch mit HTML::Template HTML-Schnippsel includen kann).

Nicht, wenn alle Aufrufe der obersten Schicht durch einen Modul der Zwischenschicht laufen und die Parametrisierung hinreichend flexibel ist. (Wenn Du Angst davor hast, ständig Parameterlisten anzupassen, dann übergib Hashes als Parameter oder baue die Zwischenschicht objektorientiert.)
Der Trick ist, daß die Kante zu HTML::Template möglichst "dünn" wird - dann hast Du die minimale Anzahl von Anpassungsstellen zu pflegen. (Beispielsweise auch dann, wenn eine neuere Version von HTML::Template plötzlich anders funktionieren würde - sie könnte ja beispielsweise plötzlich mehr können ...)

Mir ist bewusst, das ich mit dem großen Bruder "CGI" arbeite, und plötzlich auf den kleinen Bruder "SSI" ausweiche, obwohl ich mit reinen Bordmitteln schon alles abdecken könnte.

Ja, auch - aber vor allem arbeitest Du bei SSI mit dem großen Bruder "HTTP-Request", während es bei CGI der kleine Bruder "Perl-Funktionsaufruf" auch schon tut.
Das ist der große Performance-Unterschied - die Roundtrips innerhalb des Apache.

Viele Grüße
      Michael

--
T'Pol: I apologize if I acted inappropriately.
V'Lar: Not at all. In fact, your bluntness made me reconsider some of my positions. Much as it has now.
(sh:| fo:} ch:] rl:( br:^ n4:( ie:% mo:) va:| de:/ zu:| fl:( ss:) ls:~ js:|)
 => http://www.peter.in-berlin.de/projekte/selfcode/?code=sh%3A|+fo%3A}+ch%3A]+rl%3A(+br%3A^+n4%3A(+ie%3A%25+mo%3A)+va%3A|+de%3A%2F+zu%3A|+fl%3A(+ss%3A)+ls%3A~+js%3A|
Auch diese Signatur wird an korrekt konfigurierte Browser gzip-komprimiert übertragen.