0

Codeigniter アプリで A3M を使用しています。これが行うことの 1 つは、ログインしているユーザーの権限に応じて、メイン ナビゲーション メニューに表示される項目を決定することです。

これは問題なく動作しますが、メニューを生成するために必要なデータベース呼び出しの数について少し心配しています。特に、すべてのページで発生するためです。

これを回避する方法について誰か考えがありますか? おそらくある種のキャッシング。

ありがとう

4

1 に答える 1

0

非常に単純であることが判明したので、他の誰かが役に立つと思った場合に備えて、ここにソリューションを投稿しています。

大規模な詳細には触れずに (誰かが尋ねない限り)、最善のアプローチは、データベース クエリを作成して、現在のすべてのユーザーのアクセス許可の配列を抽出することのようです。a3m_accounta3m_rel_account_rolea3m_rel_role_permissionおよびa3m_acl_permissionテーブルを結合することで、これは非常に簡単です。

結果が得られたら、各 key_name を$permissions. その後、次を実行して権限を確認できますin_array('permission_to_check',$permissions)

これにより、1 回のデータベース呼び出しで多数の権限チェックを実行できます。これにより、アプリケーションが劇的に高速化されました。ログイン時にセッション データに配列を追加することもでき$permissionsます。そのため、セッション中の権限チェックでデータベース呼び出しは必要ありません (ただし、変更はすぐには反映されません)。

于 2014-10-23T13:53:36.447 に答える