Умница кэшированные файлы недействительности
Я хотел бы немного углубиться в интеллектуальное кэширование, поэтому у меня есть несколько простых вопросов...
-
Чтобы манипулировать недействительностью кэша, я хочу знать, в каком каталоге Smarty хранит его кэш. Например, все кэшированные страницы, связанные с
user_id=123
, я хочу хранить вcache/users/123/
. Гдеcache
- умное кэширование реж. Как я могу сказать smarty хранить кэш, связанный сuser_id=123
вcache/users/123/
? Будет ли Smarty хранить кэш вложенных шаблонов и в этом каталоге? -
Есть ли они вообще рекомендации по очистке кэша в этом каталоге? Я думаю, что простое удаление файлов из этого каталога может привести к некоторым ошибкам, если некоторые посетители в данный момент посещают эти страницы (ошибка может возникнуть, когда smarty увидит, что кэш шаблонов найден, но кэш подшаблонов не найден, потому что он уже был удален, например).
Любые рекомендации и советы приветствуются.
Спасибо.
3 ответа:
Взгляните на Smarty docs: раздел" группы кэша ". Делает именно это.
Вы должны Не Очистить кэш вручную. Для этого используйте clear_cache() и clear_compiled_tpl (). Вы можете очистить весь кэш, а также сделать выборочную очистку с ними.
Use может переключать smarty cachedir, в зависимости от того, где вы хотите находится (Вы можете проверить это с помощью некоторых собственных if-операторов)
// 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 и назначить новый compile dir, а затем выполнить следующую команду:
$smarty->clear_cache();
Но, как вы сказали, возможно, что файл запрашивается, пока есть удаление. :- (
но не рекомендуется использовать разные папки кэша, Smarty не кэширует выходные данные, просто скомпилированный PHP-файл.