2013-04-30 138 views
0

使用Yii的Auth Manager我使用了CachedDbAuthManager。一旦SQL執行鍼對用戶的特定角色,它就會緩存結果。下次從緩存中獲取記錄。現在,一旦管理員刪除特定用戶的角色,它仍然保留在緩存中。CachedDbAuthManager清除用戶特定角色的緩存

這個問題的解決方法是什麼?

回答

1

看看Yii的Cache Dependency Implementation

你可以例如。當管理員編輯驗證表時,使緩存無效,另請參閱database cache dependency。通常這是通過尋找最新的例如。 modified_at時間,但此列不是標準認證表的一部分。

從數據庫緩存手冊頁:

CDbCacheDependency表示基於SQL語句的查詢結果的相關性。

+0

是的,這是擴展在後面做的事! – 2013-04-30 11:45:16

+0

無論如何,我找到了解決方案,感謝您的幫助+1 :) – 2013-04-30 11:46:00

0

還有另一個擴展SingleDbAuthManager這是做幾乎相同的事情。它立即讀取整個auth樹並緩存它。

兩個SingleDbAuthManagerCachedDbAuthManager的性能vering。在我的情況下,CachedDbAuthManager佔用更少的時間,但無法更新緩存。