Smarty Cache-Dateien Ungültigkeits
-
27-09-2019 - |
Frage
Ich möchte etwas tiefer in Smarty-Caching gehen, so dass ich ein paar einfache Fragen ...
-
Cache ungültig manipulieren ich möchte wissen, was Verzeichnis Smarty es den Cache in speichert. Zum Beispiel werden alle zwischengespeicherten Seiten in Bezug auf
user_id=123
ich speichern möchten beicache/users/123/
. Wocache
ist Smarty Caching Richt. Wie kann ich beiuser_id=123
sagen Smarty Cache Speichercache/users/123/
verwandt? Will Smarty Speicher-Cache-Hilfsschablonen in diesem Verzeichnis auch? -
Gibt es irgendwelche Empfehlungen über Cache in diesem Verzeichnis Reinigung? Ich denke, dass das einfache Entfernen von Dateien aus diesem Verzeichnis einige Fehler verursachen können, wenn einige Besucher zur Zeit sind diese Seiten (Fehler besuchen können occure wenn Smarty, dass Template-Cache zu sehen ist gefunden, aber Unter Template-Cache wird nicht gefunden, weil sie bereits entfernt wurde, zum Beispiel).
Alle Empfehlungen und Ratschläge geschätzt werden.
Danke.
Lösung
Werfen Sie einen Blick auf die Smarty docs: die „ Cache-Gruppen “Abschnitt. Tut genau das.
Andere Tipps
Sie sollten nicht Cache löschen manuell. Verwenden clear_cache () und clear_compiled_tpl () dafür. Sie können alle Cache löschen und tun auch selektiven Clearing mit ihnen.
Verwenden Sie die Smarty cachedir wechseln, je nachdem, wo Sie wollen, ist (man kann, dass der Check mit einigen eigenen if-Anweisungen)
// Create smarty object
$smarty = new Smarty();
// Change smarty-dir is like this:
if (isset($_GET['userId'])) {
$smarty->compile_dir = '/path/to/dir/' . $_GET['userId'];
} else {
$smarty->compile_dir = '/path/to/dir/default';
}
Punkt zwei ist ein wenig schwieriger, müssen Sie durch alle mapps foreach, und weisen Sie das neue Kompilierung dir, und dann den folgenden Befehl ausführen:
$smarty->clear_cache();
Aber wie Sie gesagt haben, dann ist es möglich, die Datei angefordert wird, während ein Entfernen ist. : - (
Aber es wird empfohlen, nicht unterschiedlichen Cache-Ordner zu verwenden, wird Smarty die Ausgabe nicht cachen, nur die kompilierte PHP-Datei.