我在我的 Codeigniter 应用程序中使用 A3M。它所做的一件事是根据登录用户的权限确定主导航菜单中出现的项目。
这很好用,但我有点担心生成菜单所需的数据库调用次数——尤其是在每个页面上都发生这种情况时。
有人对如何避免这种情况有任何想法吗?也许是某种类型的缓存。
谢谢
我在我的 Codeigniter 应用程序中使用 A3M。它所做的一件事是根据登录用户的权限确定主导航菜单中出现的项目。
这很好用,但我有点担心生成菜单所需的数据库调用次数——尤其是在每个页面上都发生这种情况时。
有人对如何避免这种情况有任何想法吗?也许是某种类型的缓存。
谢谢
结果很简单,所以我在这里发布解决方案,以防其他人发现它有用。
在不深入细节的情况下(除非有人问),最好的方法似乎是创建一个数据库查询来提取所有当前用户权限的数组。a3m_account
通过加入、和表a3m_rel_account_role
,这非常简单。a3m_rel_role_permission
a3m_acl_permission
获得结果后,通过将每个 key_name 添加到名为$permissions
. 然后,您可以通过执行in_array('permission_to_check',$permissions)
这允许您使用单个数据库调用执行大量权限检查。这大大加快了我的申请速度。您甚至可以$permissions
在登录时将数组添加到会话数据中,因此通过会话进行权限检查不需要数据库调用(但显然,更改不会立即发生)。