Sven Rautenberg: Seiten Cachen - Macht das Sinn?

Beitrag lesen

Moin!

mache mir gerade Gedanken wie ich eine möglichst gutes Template-System (so Performanceschonend wie möglich) bauen könnte. Meine Frage ist ob das, was ich mir da ausgedacht habe, Performance-Technick Sinn macht oder ob es noch verbesserbar ist.

Wenn's dir um Performance geht: Meide dynamische Webseiten. :)

Wobei der Rat auch ganz ohne Smiley funktioniert: Schreibe deine Webseiten statisch auf den Server und liefere sie von der Platte aus. Ist wunderbar performant - wenngleich etwas aufwendiger beim Generieren. Und nicht so gut geeignet, um wirklich dynamische Informationen (wie z.B. die Zahl der Besucher, die gerade "online" sind) zu integrieren (wobei: für genau diesen Zweck kann man auch statisch das Ergebnis einer Zufallszahl von 1 bis 10 einbauen ;) ).

Alternativ: Meide Template-Engines. Die verbrauchen auch einen teilweise erheblichen Anteil an Performance alleine zum Parsen des Templates. PHP ist ja selbst eine immer weiter aufgebohrte Template-Engine. Wenn man sich strikt an Code-Trennung hält, kann man damit auch effizient und vernünftig Templates herstellen.

Alternativ: Optimiere nichts, was du nicht messen kannst. Denn wenn du nicht weißt, ob deine Alternative, die du dir kompliziert ausgedacht hast, wirklich schneller ist, oder langsamer, kannst du die jeglichen Gehirnschmalz genausogut auch sparen.

Du brauchst zunächst also erst einmal einen Meßmechanismus und Kriterien, die du messen und optimieren willst. Ohne diese ist jeglicher Optimierungsversuch sinnlos.

So würde ich sie in 3 Cache-Files zerlegen. Das erste enthält den Anfang mit der Anweisung "Nicht dynamisch" und "suche nach Nachfolger", also kann der Inhalt einfach blind rausgegeben werden. Zweite Datei enthält die Anweisungen "Dynamisch" und "suche nach Nachfolger", der Inhalt wird also geparsed und dann rausgegeben und die dritte enthält nur "nicht dynamisch" und wird wieder einfach so rausgehauen.
Ich müsste also 3 verschiedene Dateien im Dateisystem lesen, verringe aber den zu parsenden Teil deutlich. Macht es Sinn das so zu machen? Oder ist es sinnvoller das Stückeln zu lassen und einfach nur die Seiten zu cachen die wirklich statisch sind und alles andere komplett zu parsen (mit allen Konsequenzen)? Oder habe ich sonst irgendwelche Probleme in meinem Entwurf übersehen?

Die Frage ist, was du optimieren willst. Ladezeit beim User? CPU-Zyklen? Festplattenzugriffe minimieren? Außerdem, wo der Flaschenhals sitzt. Und dann noch, welchen Systemeinfluß du nehmen kannst. Das Einrichten einer RAM-Disk beispielsweise wäre sicherlich für einige Dinge recht hilfreich und würde enormes Potential bieten, dürfte aber andererseits wohl nur bei komplettem Serverzugriff als Admin möglich sein.

- Sven Rautenberg

--
"Love your nation - respect the others."