php.de

Zurück   php.de > Webentwicklung > Software-Design

Software-Design Diskussionen auf Profi-Niveau: PHP Lösungen auf konzeptioneller Ebene

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 10.09.2010, 13:14  
Neuer Benutzer
 
Registriert seit: 02.09.2010
Beiträge: 2
PHP-Kenntnisse:
Fortgeschritten
Unic befindet sich auf einem aufstrebenden Ast
Standard Caching von Template-Dateien

Hallo Community,

Ich arbeite derzeit an einem Framework, das eine Abstrake XML-Syntax für Template Aufgaben einsetzt. Dabei ist es Möglich aus einer Template-Datei heraus von Basis-Template-Dateien zu erben (also diese zu erweitern, um Beispielsweise ein Design wiederzuverwenden) sowie andere Template-Dateien direkt einzubinden (entspr. include "blah.bla"; in PHP). Der komplette Vorgang wird mittels einer XML-Stylesheet-Transformation (XSLT) gelöst und funktioniert auch wunderbar.

Mein "Problem" ist die Performance. Sie ist zwar nicht extrem schlecht, aber bei großen Dokumenten und tiefen Verschachtelungen gibt es eine merkliche Verzögerung (geschätzte 0.5 sekunden).
Meine Idee ist die fertig transformierten Templates zu cachen, denn was anderes bleibt mir wohl kaum übrig. Nur frage ich mich anhand welches Kriteriums ich die erneute Transformation am besten starte? Möglich wäre es neu zu übersetzen sobald sich eine Datei in der extend/include Hierarchie ändert, was man mittels des Änderungsdatums der Datei feststellen könnte. Das klingt erstmal ganz gut, aber dafür ist es nötig die gesamte Hierarchie zu durchlaufen um festzustellen ob die Dateien geändert wurden oder nicht. Das schliest natürlich das öffnen der Dateien, also einer Menge Dateisystemzugriffe, sowie das Parsen mittels des XMLReaders ein und genau das möchte ich ja vermeiden.

Eine andere Möglichkeit die mir spontan einfällt ist die Dateien einfach nach einer festgelegten Zeit neu zu transformieren. Während der Entwicklung einer Webseite könnte man diese Zeit auf 0 herunterdrehen um Änderungen am Code direkt beobachten zu können. Wird die Seite dann online gestellt und die Anzahl der Zugriffe steigt wird die Zeit eben auf einen Entsprechenden Wert heraufgesetzt um unnötige Last auf dem Server zu vermeiden.

Gibt es hier jemanden der schonmal Erfahrungen in diese Richtung gesammelt hat? Gibt es eventuell Frameworks/Klassen/Funktionen die mir diese Arbeit erleichtern /abnehmen. Oder hat PHP einen eingebauten Cache-Mechanismus was Dateisystem-Zugriffe betrifft?
Ich bin für jeden Hinweis und jeden Gedanken zu dem Thema dankbar!

viele Grüße, Unic.
Unic ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 10.09.2010, 13:44  
Erfahrener Benutzer
 
Registriert seit: 23.08.2010
Beiträge: 492
PHP-Kenntnisse:
Fortgeschritten
mimomamu sorgt für eine eindrucksvolle Atmosphäremimomamu sorgt für eine eindrucksvolle Atmosphäre
Standard

Während der Entwicklung Caching abschalten. Während des Einsatzes nur auf explizites Verlangen neu transformieren.
__________________
Meinungen, die ich geäußert habe, sind nicht notwendigerweise meine eigenen. Abweichungen von der deutschen Rechtschreibung unterliegen dem Urheberrecht, dürfen aber unter den Bedingungen von verwendet werden
mimomamu ist offline   Mit Zitat antworten
Alt 10.09.2010, 14:15  
Erfahrener Benutzer
 
Registriert seit: 30.07.2008
Beiträge: 1.129
PHP-Kenntnisse:
Fortgeschritten
xm22 sorgt für eine eindrucksvolle Atmosphärexm22 sorgt für eine eindrucksvolle Atmosphärexm22 sorgt für eine eindrucksvolle Atmosphäre
Standard

Zitat:
Während der Entwicklung Caching abschalten. Während des Einsatzes nur auf explizites Verlangen neu transformieren.
Halte ich auch für die beste Idee. Vielleicht noch mit dem Zusatz, dass man für Bereiche explizit das Caching-Verhalten festlegen kann.
xm22 ist offline   Mit Zitat antworten
Alt 10.09.2010, 19:26  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.633
PHP-Kenntnisse:
Fortgeschritten
dr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblick
dr.e. eine Nachricht über Skype™ schicken
Standard

Hallo Unic,

Zitat:
Gibt es eventuell Frameworks/Klassen/Funktionen die mir diese Arbeit erleichtern /abnehmen.
Du kannst dir mal View based caching - ein HOWTO :: Adventure PHP Framework (APF) ansehen. Dort wird Template-Caching auf Basis des APF implementiert. Das dort beschriebene Framework hat bereits eine XML-Syntax für den Aufbau von Templates. Unter Why APF? :: Adventure PHP Framework (APF) findest du eine Übersicht der Features und sollte auf den ersten Blick auf deine Anforderungen alle Bereiche abdecken.
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline   Mit Zitat antworten
Alt 13.09.2010, 14:20  
Erfahrener Benutzer
 
Registriert seit: 02.09.2009
Beiträge: 921
PHP-Kenntnisse:
Fortgeschritten
mquadrat befindet sich auf einem aufstrebenden Ast
Standard

Die Caching-Strategie richtet sich primär nach den Anforderung. Wenn die Seite "nur" weitgehend statische Inhalte wie Blogartikel hat, dann kann man sicherlich auch nur auf Anforderung die Transformation erneut starten. Wenn du allerdings eine Webanwendung im Multi-User-Betrieb hast und jeder sofort die neusten Daten sehen soll, dann wird es eng mit dem Caching. Insofern empfiehlt es sich keine globale Caching Policy zu implementieren, sondern unterschiedliche Policies für unterschiedliche Bereiche des Projekts zu implementieren.
__________________
Wir suchen PHP / Delphi und .NET Entwickler im Raum Darmstadt / Rhein-Main. Infos via E-Mail mueller@new-frontiers.de
mquadrat ist offline   Mit Zitat antworten
Alt 13.09.2010, 14:30  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.633
PHP-Kenntnisse:
Fortgeschritten
dr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblick
dr.e. eine Nachricht über Skype™ schicken
Standard

Exakt deshalb ist ja view based caching als ein granulares Konzept so gut geeignet. Dort hast du die Möglichkeit, quasi-statische Views mit Caching zu versehen und personalisierte Bereiche auszusparen.
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline   Mit Zitat antworten
Alt 15.09.2010, 12:51  
Neuer Benutzer
 
Registriert seit: 15.09.2010
Beiträge: 20
PHP-Kenntnisse:
Fortgeschritten
gagu345 befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von mimomamu Beitrag anzeigen
Während der Entwicklung Caching abschalten. Während des Einsatzes nur auf explizites Verlangen neu transformieren.
... oder ein live- und ein Entwickler-System aufsetzen. Im live-Betrieb werden IMMER die Cache-Daten geladen. Bei Bedarf kann dann auf Basis des Entwickler-Systems neu transformiert werden. Hat den Vorteil, dass du parallel arbeiten und diverse Anpassungen zu Genüge im Vorfeld testen kannst, bevor es live geht.
gagu345 ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Scriptangebot Serpent Template Engine McSodbrenner Scriptbörse 3 26.03.2010 21:37
[Erledigt] ZipArchive: Vorhandene Dateien beim entpacken überschreiben? deMaddin PHP Tipps 2009 6 16.11.2009 19:28
php Dateien erstellen/auslesen bearbeiten und speicher largo PHP Tipps 2009 7 30.09.2009 10:10
Backup-Funktion, nur veränderte Dateien erfassen @lex PHP Tipps 2009 5 18.08.2009 15:11
Architektur Caching + Template bei comments / sites scco PHP-Fortgeschrittene 5 14.04.2009 22:38
Lieber Template oder Normal für ein community? mysteryxxx PHP Tipps 2008 8 17.09.2008 23:04
[Erledigt] Alle Dateien eines Ordner und aller Unterordner aufrufen und die Größe ber BartTheDevil89 PHP Tipps 2008 6 12.08.2008 19:17
PHP Dateien verschlüsseln GSJLink PHP-Fortgeschrittene 2 26.04.2008 12:29
[Logik] Mehrere Dateien als Anhang per Formular versenden PsychoEagle PHP Tipps 2008 2 27.08.2007 08:58
template in template einfuegen tonne PHP Tipps 2005-2 8 10.11.2005 22:24
[Erledigt] Nur bestimmte Dateien anzeigen, wie mache ich das HILFE PHP Tipps 2005 4 02.04.2005 22:38
Template Parser PHP-Fortgeschrittene 9 06.10.2004 23:04
Mit PHP erzeugte Dateien besitzen die falschen Rechte PHP Tipps 2004 3 14.09.2004 12:54
[Erledigt] PHP Dateien auf Server einsehen - Verschlüsseln PHP Tipps 2004 6 12.09.2004 10:17
[Erledigt] Dateien aus Verzeichnissen vom Webserver auslesen und linken PHP Tipps 2004 3 08.09.2004 10:07

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
unic framework, template caching php, php datei cachen, cache template dateien, template caching, php framework templates cache, apf template cache, php caching des templates, http://www.php.de/software-design/71693-caching-von-template-dateien.html, php template, templates php

Alle Zeitangaben in WEZ +1. Es ist jetzt 08:23 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum