Smarty кэшированные файлы недействительны
-
27-09-2019 - |
Вопрос
Я хотел бы немного глубже в Smarty Caching, поэтому у меня есть несколько простых вопросов ...
Чтобы манипулировать недействительством кэша, я хочу знать, какой каталог Smarty хранит свой кеш в. Например, все кэшированные страницы, связанные с
user_id=123
Я хочу хранить вcache/users/123/
. Отказ Гдеcache
Является ли Smarty Caching Dir. Как я могу сказать Smarty для хранения кэша, связанного сuser_id=123
вcache/users/123/
? Будет ли Smarty Store Cache из Sub-шаблонов в этом каталоге также?Есть ли рекомендации по поводу чистки кеша в этом каталоге? Я думаю, что просто удаление файлов из этого каталога может привести к некоторым ошибкам, если некоторые посетители в настоящее время посещают эту страницы (ошибка может произойти, когда Smarty увидит, что кэш шаблона найден, но кэш-память шаблона не найден, потому что он уже был удален, Например).
Любые рекомендации и советы ценятся.
Спасибо.
Решение
Посмотрите на Smarty Docs: "Группы кэша«Раздел. Делает именно это.
Другие советы
Вам следует НЕТ Очистить кеш вручную. Используйте clear_cache () и clear_compiled_tpl () для этого. Вы можете очистить все кеш, а также сделать селективную очистку с ними.
Использование может переключать Smarty Cachedir, в зависимости от того, где вы хотите (вы можете проверить, что с некоторыми собственными заявлениями)
// 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';
}
Точка вторая немного сложнее, вы должны нарисовать все MAPPS, а также назначить новую компиляцию DIR, а затем выполнить следующую команду:
$smarty->clear_cache();
Но, как вы сказали, это возможно, файл запрашивается, пока есть удаление. :-(
Но не рекомендуется использовать разные папки кэша, Smarty не входит в систему вывода, просто компилированный PHP-файл.