簡體   English   中英

登錄時禁用智能緩存

[英]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);

當然,這將與定義動態塊一樣有效,但是會容易得多,並且很多流量都未登錄。

我非常肯定這會在需要時出現在前端, 真正的問題是當我繼續禁用它時是否會緩存任何內容。 但是,我當然會對執行此操作的任何其他潛在問題感興趣。

例如:

  • 用戶1(未登錄)-執行頁面並創建緩存
  • 用戶2(已登錄)-執行頁面緩存-已禁用
  • 用戶3(未登錄)-是否將從緩存中加載?

幾年未使用Smarty,但這是我的看法,除非您的登錄用戶和匿名/注銷用戶有完全不同的看法,否則我將根據手動建議排除登錄視圖中動態集團的變化。

有一個插件可以控制緩存,但是我不推薦這樣做。

而且,許多人會混淆編譯和緩存,如果您希望100%緩存,則$ force_compile指令可能會執行您想要的操作,但不建議在生產站點中使用,因為它確實會增加性能。

手冊頁還可以幫助您實現目標。

祝你好運的朋友! :o)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM