Отключить Smarty кэширование при входе в систему - PullRequest
2 голосов
/ 15 мая 2011

Проблема, которую я пытаюсь решить, почти идентична следующей: разумный кеш и состояния входа в систему , но я хочу знать, могу ли я решить эту проблему определенным образом.

Что я хочу сделать, это просто отключить все smarty кэширование, если пользователь вошел в систему. Например:

$smarty->cache_lifetime = 300;
$smarty->caching = ( $user->is_logged_in ) ? false : 2;
$my_cache_id = $_GET['article_id'];
if( $user->is_logged_in || !$smarty->is_cached('index.tpl',$my_cache_id) ) {
    //Get page data
}
$smarty->display('index.tpl', $my_cache_id);

Конечно, это будет иметь такой же эффект, как и определение динамических блоков, но это будет намного проще, и большая часть моего трафика не будет зарегистрирована.

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

Например:

  • Пользователь 1 (не авторизован) - выполняет страницу и создает кэш
  • Пользователь 2 (вошел в систему) - выполняет кэширование страниц;
  • Пользователь 3 (не вошел в систему) - будет ли это загружаться из кэша?

1 Ответ

0 голосов
/ 20 мая 2011

Smarty не использовался в течение нескольких лет, но вот мое мнение, если только ваши вошедшие в систему и анонимные / вышедшие из системы пользователи не имеют абсолютно разных представлений, я бы исключил вошедших в представление представлений, которые изменяются в динамических блоках согласно рекомендации по применению .

Существует плагин для управления кэшем , но довольно глючный, я не рекомендую его.

Кроме того, многие путают компиляцию и кэширование, если вы хотите 100% кэшированиедиректива $ force_compile может делать то, что вы хотите, но не рекомендуется для производственных сайтов, поскольку она добавляет хит производительности.

Эта справочная страница может также помочь вам сделать то, к чему вы стремитесь.

Удачи, друг!: О)

...