2
我试图解决的问题几乎与此相同:smarty cache and login states,但我想知道是否可以通过特定方式解决此问题。登录时禁用smarty缓存
我想要做的就是简单地禁用所有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(登录) - 执行PAGE-缓存被禁用
- 用户3(未登录in) - 这会从缓存中加载吗?
我已经测试过这种情况,出现登录和退出 - 看起来缓存挂起,只是在关闭时忽略。我希望有人在这里有一些输入。 – therealsix 2011-05-15 17:46:29
请澄清你的问题。我不确定你想达到什么目的。至少,行$ template-> caching = ...应该读为$ smarty-> caching = .. – SteAp 2011-05-15 22:41:51
@ stefan-pantke - 哎呀...只是示例代码和我的代码之间的不一致 - 我使用$ template作为聪明的对象名称 – therealsix 2011-05-16 03:56:15