[英]Disable smarty caching when logged in
我要解決的問題幾乎與此相同: 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);
當然,這將與定義動態塊一樣有效,但是會容易得多,並且很多流量都未登錄。
我非常肯定這會在需要時出現在前端, 真正的問題是當我繼續禁用它時是否會緩存任何內容。 但是,我當然會對執行此操作的任何其他潛在問題感興趣。
例如:
幾年未使用Smarty,但這是我的看法,除非您的登錄用戶和匿名/注銷用戶有完全不同的看法,否則我將根據手動建議排除登錄視圖中動態集團的變化。
有一個插件可以控制緩存,但是我不推薦這樣做。
而且,許多人會混淆編譯和緩存,如果您希望100%緩存,則$ force_compile指令可能會執行您想要的操作,但不建議在生產站點中使用,因為它確實會增加性能。
此手冊頁還可以幫助您實現目標。
祝你好運的朋友! :o)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.