Ich mache mir gerade gedanken was wohl die perfomantest Möglichkeit wäre Template zu laden. Momentan hole ich sie aus einer Mysql Datenbank was auch schon ziemlich gut funktioniert jedoch kam mir heute die Idee das ganze in xml Dateien auszulagern da diese die Möglichkeit bieten zb alle globalen Templates in einer Datei abzulegen und entpsrechend für jede ander Anwendungsgruppe jeweils eine extra Datei, hierbei könnte ich mir einen Geschwindigkeitsschub erhoffen oder zumindest mal die DB entlasten. Was haltet ihr von der XML Methode? Und wie würdet ihr das mit php4.3 erledigen (ohne simple xml)?
Performanteste Art Templates zu laden?
Einklappen
X
-
Stichworte: -
-
Vom Abrufen der Templates aus einer Datenbank würde ich dir abraten, dass bringt nur unnötige Serverlast. Die (HTML-)Dateien auf der HDD auslagern bringt m.E. weit mehr.
Auch die XML-Variante ist nicht gerade die performanteste, zumal die Files bei jedem Aufruf neu geparsed werden müssen. HIER sind weitere Denkanstöße zu finden. Afaik geistert im Forum auch eine recht gute Template-Klasse herum.
-
Ich habe ja schon eine eigene Templateklasse, mit der ich auch keinerlei Probleme habe. Die xml Idee kam mir halt weil da denke ich mal noch relativ viele User die Templates verändern können. Außerdem muss ich jedes xml File doch nur einmal laden je nach Berreich gibt ja ein extra xml File das dann einfach einmal in ein array geladen würde.
Es ist mir schon klar, dass man auch einfach die jeweiligen Template arrays mit
addslashes(serialize($templates)):
In eine Datei schreiben könnte allerdings glaube ich kaum, dass da noch ein User durchblicken würde.
Kommentar
-
Ich benutze die Dateimethode.
Allerdings ist es meistens so, dass die Datei bei jedem aufruf des Templates neu ausgelesen wird.
Manchmal geschieht das mehrmals.
Also übergebe ich einen optionalen Parameter beim ersten Aufruf, daraufhin wird die Datei ausgelesen und in einem buffer Array abgelegt.
Jetzt noch standardmäßig eine kleine isset abfrage rein, die prüft ob die Datei schon im buffer ist und fertig.
Wenn man es nicht ebnötigt, wird lediglich die isset Abfrage ausgeführt. Das ist Minimalaufwand.
Methode für Datenbank:
Erst alle Namen der aufzurufenden Templates in einem buffer speichern. Dann alle auf einmal aus der DB lesen.
Dann einzeln durchparsen.
Nur wohin dann mit den Returnwerten?
Ein Ansatz wäre einen Decorator Pattern zu benutzen.
Kommentar
-
Also ich machs jetzt doch mir Cache dazu muss nicht mal Safe mode off sein. Ich serialisiere die Arrays mit den Templates einfach und lade bei Bedarf die entsprechende Datei. Das geht recht fix und man kann die Templates einfach per Webinterface editieren.
Kommentar
Kommentar