2011-05-15 63 views
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) - 這會從緩存中加載嗎?
+0

我已經測試過這種情況,出現登錄和退出 - 看起來緩存掛起,只是在關閉時忽略。我希望有人在這裏有一些輸入。 – therealsix 2011-05-15 17:46:29

+0

請澄清你的問題。我不確定你想達到什麼目的。至少,行$ template-> caching = ...應該讀爲$ smarty-> caching = .. – SteAp 2011-05-15 22:41:51

+0

@ stefan-pantke - 哎呀...只是示例代碼和我的代碼之間的不一致 - 我使用$ template作爲聰明的對象名稱 – therealsix 2011-05-16 03:56:15

回答

0

沒有使用Smarty的幾年,但這裏是我拿的,除非你的登錄和匿名/註銷用戶有完全不同的看法,我會分解出登錄的觀點,即改變在動力集團,根據manual reccomendations

有一個pluggin to control the cache,但相當多的車,我不推薦它。

此外,許多編譯和緩存混淆,如果你想100%緩存,$force_compile directive可以做你想做的,但不推薦用於生產站點,因爲它確實增加了性能打擊。

man page也可以幫助你做你想要的。

祝你好運的朋友! :o)