Умница кэшированные файлы недействительности


Я хотел бы немного углубиться в интеллектуальное кэширование, поэтому у меня есть несколько простых вопросов...

  1. Чтобы манипулировать недействительностью кэша, я хочу знать, в каком каталоге Smarty хранит его кэш. Например, все кэшированные страницы, связанные с user_id=123, я хочу хранить в cache/users/123/. Где cache - умное кэширование реж. Как я могу сказать smarty хранить кэш, связанный с user_id=123 в cache/users/123/? Будет ли Smarty хранить кэш вложенных шаблонов и в этом каталоге?

  2. Есть ли они вообще рекомендации по очистке кэша в этом каталоге? Я думаю, что простое удаление файлов из этого каталога может привести к некоторым ошибкам, если некоторые посетители в данный момент посещают эти страницы (ошибка может возникнуть, когда smarty увидит, что кэш шаблонов найден, но кэш подшаблонов не найден, потому что он уже был удален, например).

Любые рекомендации и советы приветствуются.

Спасибо.

3 2

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-файл.