我试图解决的问题几乎与此相同:smarty cache and login states,但我想知道我是否能以特定的方式解决这个问题。
我想要做的只是在用户登录时禁用所有智能缓存。例如:
$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);
当然,这会产生与定义动态块一样多的效果,但它会更容易,而且我的大部分流量都没有登录。
我非常肯定这将出现在前端,因为我需要它,真正的问题是它是否会在我不断禁用它时缓存任何东西。但当然我会对这样做的任何其他潜在问题感兴趣。
例如:
答案 0 :(得分:0)
在几年内没有使用过Smarty但是这是我的看法,除非您登录和匿名/注销的用户有完全不同的视图,否则我会将登录视图中的动态集合中的变化分解为manual reccomendations。
有一个pluggin to control the cache,但我不推荐它。
此外,许多人混淆编译和缓存,如果你想要100%缓存,$force_compile directive可能会做你想要的,但不建议用于生产网站,因为它确实增加了性能。
此man page也可以帮助您实现目标。
好运的朋友! :O)