Отключить кеширование 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 (не авторизован) - это будет загружаться из кеша?

person therealsix    schedule 15.05.2011    source источник
comment
Я тестировал этот вход и выход - похоже, что кеш зависает и просто игнорируется при выключении. Я бы хотел, чтобы здесь кто-то внес свой вклад.   -  person therealsix    schedule 15.05.2011
comment
Уточните пожалуйста свой вопрос. Я не уверен в том, чего вы хотите достичь. По крайней мере, строка $ template- ›caching = ... должна читать $ smarty-› caching = ..   -  person SteAp    schedule 16.05.2011
comment
@ stefan-pantke - упс ... просто несоответствие между примером кода и моим кодом - я использую $ template в качестве имени умного объекта   -  person therealsix    schedule 16.05.2011
comment
Просто примечание - я только что установил Drupal (7) и заметил, что он предлагает то, о чем я просил. Есть опция производительности «Кэшировать страницы для анонимных пользователей».   -  person therealsix    schedule 04.07.2011


Ответы (1)


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

Существует плагин для управления кешем, но он содержит много ошибок, я не рекомендую его.

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

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

Удачи друг! : o)

person stefgosselin    schedule 20.05.2011