Templates: Smarty?

Leomuck

Mitglied
Hallo allerseits,

ich benutze in meinem CMS schon seit einiger Zeit eine eigene, äußerst einfach gestaltete "Template-Engine" (einlesen, str_replace, ausgeben) und bin aufgrund der guten Trennung von Code und Design auch sehr zufrieden damit. Jedoch gibt es ein gravierendes Problem: mein CMS ist relativ langsam. Die Ladezeiten bewegen sich auf meinem lokalen Server zwischen 1 und 3 Sekunden (eher 1 bis 2 Sekunden), was ich für zu viel halte. Nun wurde mir gesagt, dass die langen Ladezeiten durch die Template-Engine zustande kommen und, dass ich das Ganze durch cachen umgehen kann.

Ich habe 0 Ahnung, wie ich ein eigenes "Cache-System" bauen kann und habe derzeit auch wenig Lust/Zeit, mich damit zu beschäftigen. Ich spiele daher mit dem Gedanken, eine fertige Template-Engine einzubauen. In Bezug darauf wurde mir Smarty empfohlen, welches ich bereits getestet habe und für sehr komfortable halte.

Jetzt also meine Frage: lohnt sich der Umstieg auf Smarty? Macht das in Bezug auf Geschwindigkeit und Ladezeiten einen großen Unterschied?

Ich hoffe, ihr habt den ein oder anderen Rat für mich.


Grüße,
Leomuck
 
Zuletzt bearbeitet:
Hallo Leomuck,
mir scheint es das du eher Probleme mit deiner DB hast.
Deine Geschwindigkeitsprobleme könnten durch die verschiedensten Faktoren verursacht werden.
Meistens sind es fehlerhafte/unvorteilhafte Queries oder fehlende/unvorteilhafte Indizes.

Ist deine Datenbank vernünftig normalisiert?
  • Hast du vernünftigie Indizes erstellt?
  • Ist deine MySql DB optimal eingestellt?
    Dies kann man mit dem Tuning Primer Script herausfinden.
    Das Script kannst du durch Google finden. Vergiss aber nicht den Kommandozeilenrechner bc zu installieren.
  • Benutzt du Resourcenhungrige abfragen ? (bsp. SELECT * from `Tabelle`)
  • Benutzt du den MySQLCache für deine Abfragen?
    Falls nicht steht hier eine gute Anleitung.
  • Das Tabellenformat InnoDB ist verdammt schnell.
    Probiers mal damit.

Ich hoffe ich konnte weiterhelfen. :)
 
Bei InnoDB vs. MyISAM scheiden sich die die Geister... Meist heißt es, InnoDB ist langsamer beim Lesen, dafür schneller als beim Schreiben als MyISAM. Das ist nur zum Teil korrekt. Bei wenigen Datnsätzen die gelesen werden müssen, ist MyISAM viel schneller beim Lesen. Werden es aber sehr viele Datensätze, die gelesen werden müssen, ist innoDB effektiver. Es kommt immer auf die Datenstruktur an.

Und Caching ist eigentlich ein ziemlich einfaches Thema, wenn man sich ein wenig tiefer in PHP auskennt, wie output buffering, file-Operatoren und dem (beliebten) HTTP Header 302 - Not Modified, sowie weitere Header wie "ETag".
 
Zuletzt bearbeitet:
Ich denke auch, dass hier evtl. die Datenbank der Grund ist. Ich setze Smarty schon seit Jahren ein und lasse beruflich unsere Firmenwebsite auf Smarty laufen und habe mit ca. 200 Datenbankzugriffen und der Ausführung von ca. 30 verschachtelten Templates pro Seite eine durchschnittliche Erstellungszeit von 0,3 Sekunden.

Welche Datenbankengine du benutzt solltest du von der Art und Häufigkeit des Zugriffs und der Tabellengröße abhängig machen. MyISAM ist auf vieles Lesen ausgerichtet. MyISAM sperrt während des Schreibvorgangs die ganze Tabelle. Resultat: Bei vielen Schreibzugriffen ist die Tabelle ständig gelockt, Lesezugriffe müssen warten und die Seite wird langsam. Musst du also viel schreiben, verwende InnoDB. InnoDB lockt nur den Datensatz, der geschrieben wird, sodass gleichzeitig noch aus anderen Datensätzen gelesen werden kann.

Insgesamt muss natürlich wie oben schon geschrieben auf gute Normalisierung und gut durchdachte Indexes geachtet werden.
 
Zurück