hi,
Im Zusammenhang mit der Überlegung für den Aufbau eines kleinen "Mini-CMS" für meine kleine private Homapage (lose Artikelsammlung), stehe ich (persönlich erstmals) vor der Frage, wie man ggf. einen "Caching-Mechanismus" am besten/ sinnvollsten realisiert, bzw. ob sich der Aufwand für kleine Sites überhaupt lohnt?
Da kann ich dir Smarty empfehlen, dass bringt den Caching-Mechanismus von Haus aus mit (und ein Effektives dazu).
Smarty legt eine kopie von den erzeugten Ressourcen in ein Cache-Verzeichnis und liefert die Seiten nach dem Cachen aus diesem Verzeichnis, sprich die Inhalte werden nur einmal geparst und gespeichert.
Zu dem kommt, dass Smarty auch bei bereits besuchten Seiten die richtigen Header, in dem Fall 304 Not Modified mitsendet, so dass diese Seiten aus dem Browsercache geladen werden können.
Welche Dinge kann/ sollte man grundsätzlich besser nie cachen?
Dynamische Seiten, Bspw. Seiten mit einer Kommentarfunktion oder Gästebücher.
Wobei man hier unterscheiden muss; wenn der User nur lesend unterwegs ist, kann er die Inhalte aus dem Cache haben, wenn er einen Beitrag schreiben möchte, muss dass Caching deaktiviert werden.
Und wie schließt man diese dann davon aus?
Mit Smarty:
/*
* Wenn User was schreiben möchte oder eingelogged, nicht cachen
*/
if (isset($_GET['write']) OR isset($_logged))
{
$smarty->caching = false;
}
else
{
$smarty->caching = true;
$smarty->cache_lifetime = 18000; // bei mir auf 5 Stunden
$smarty->compile_check = false;
$smarty->force_compile = false;
$smarty->cache_modified_check = 1;
}
$smarty->display('my.tpl', $_SERVER['REQUEST_URI']);
Wenn ein neuer Beitrag geschrieben wurde, muss dass Cache-Verzeichnis gelöscht werden, ansonsten wird der Beitrag erst in der Seite erscheinen, wenn cache_lifetime abgelaufen ist.
Auf welche besonderen Dinge muss man achten, wenn man z.B. Sessions verwendet und/ oder Seiten hat, die eine Authentifizierung erfordern?
Dann wird das Caching nichts bringen; Cache bedeutet, dass der User eine Kopie der Inhalte bekommt, ob vom Server oder aus dem Browsercache, ist in diesem Fall egal.
Ob für einen rein lesenden Zugriff überhaupt eine Session angelegt werden soll, weiß ich noch nicht. Vermutlich aber schon.
Für nur lesenden Zugriff würde ich das Caching bevorzugen, einmal deinem Traffic, zum anderen deinen Usern zuliebe, da Ressourcen nicht immer wieder geladen werden müssen und die Seiten zum Teil schneller ausgeliefert werden.
Ein Login dürfte höchstwahrscheinlich u.a. für die Kommentarfunktion von Nöten sein. Je nach Seite dürfte es aller Wahrscheinlichkeit nach angepasste (dynamische) (Unter-)Menüs geben.
Wie gesagt, Login und Generell Seiten, die durch die User in irgendeiner Form verändert werden können, wird das Caching nicht funktionieren.
Wobei Smarty auch für diesen Fall einige Funktionen mitbringt, wie Bspw. Blockweise Cachen, und teile der Seite Dynamisch halten (nur wird das dann mit den Session wieder schwierig).
mfg
--