登录时禁用智能缓存

时间:2011-05-15 13:03:31

标签: php caching smarty

我试图解决的问题几乎与此相同: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);

当然,这会产生与定义动态块一样多的效果,但它会更容易,而且我的大部分流量都没有登录。

我非常肯定这将出现在前端,因为我需要它,真正的问题是它是否会在我不断禁用它时缓存任何东西。但当然我会对这样做的任何其他潜在问题感兴趣。

例如:

  • 用户1(未登录) - 执行页面并创建缓存
  • 用户2(已登录) - 禁用执行页面缓存
  • 用户3(未登录) - 是否会从缓存中加载?

1 个答案:

答案 0 :(得分:0)

在几年内没有使用过Smarty但是这是我的看法,除非您登录和匿名/注销的用户有完全不同的视图,否则我会将登录视图中的动态集合中的变化分解为manual reccomendations

有一个pluggin to control the cache,但我不推荐它。

此外,许多人混淆编译和缓存,如果你想要100%缓存,$force_compile directive可能会做你想要的,但不建议用于生产网站,因为它确实增加了性能。

man page也可以帮助您实现目标。

好运的朋友! :O)