Smarty кеширование файлов - PullRequest
       9

Smarty кеширование файлов

2 голосов
/ 10 августа 2010

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

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

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

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

Спасибо.

Ответы [ 3 ]

1 голос
/ 10 августа 2010

Вы должны НЕ очистить кеш вручную.Для этого используйте clear_cache () и clear_compiled_tpl ().Вы можете очистить весь кеш, а также сделать выборочную очистку с ними.

0 голосов
/ 10 августа 2010

Посмотрите документы Smarty: раздел " Cache Groups ". Делает именно это.

0 голосов
/ 10 августа 2010

Использование может переключать 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 и назначить новый каталог компиляции, а затем выполнить следующую команду:

$smarty->clear_cache();

Но, как вы сказали, возможно, файл запрашивается во время удаления. : - (


Но не рекомендуется использовать разные папки кэша, Smarty не кэширует вывод, только скомпилированный PHP-файл.

...