使用 Yii 的 Auth Manager,我使用了 CachedDbAuthManager。一旦 SQL 针对用户执行特定角色,它就会缓存结果。下次从缓存中获取记录。现在,一旦管理员删除特定用户的角色,它仍会保留在缓存中。
这个问题的解决方案是什么?
使用 Yii 的 Auth Manager,我使用了 CachedDbAuthManager。一旦 SQL 针对用户执行特定角色,它就会缓存结果。下次从缓存中获取记录。现在,一旦管理员删除特定用户的角色,它仍会保留在缓存中。
这个问题的解决方案是什么?
看看 Yii 的Cache Dependency Implementation。
你可以例如。当管理员编辑 auth 表时使缓存失效,另请参见数据库缓存依赖项。通常这只是通过寻找最新的例如来完成。modified_at
时间,但此列不是标准身份验证表的一部分。
从数据库缓存手册页:
CDbCacheDependency 表示基于 SQL 语句查询结果的依赖关系。
还有另一个扩展SingleDbAuthManager正在做几乎相同的事情。它一次读取整个身份验证树并将其缓存。
SingleDbAuthManager和CachedDbAuthManager的性能都非常好。CachedDbAuthManager 花费的时间更少,但在我的情况下无法更新缓存。