Проблема, которую я пытаюсь решить, почти идентична этой: умный кеш и состояния входа , но я хочу знать, смогу ли я решить эту проблему определенным образом.
Я хочу просто отключить все умное кэширование, если пользователь вошел в систему. Например:
$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 (не авторизован) - это будет загружаться из кеша?