gpt4 book ai didi

asp.net-mvc-3 - 减少菜单生成时间

转载 作者:行者123 更新时间:2023-12-02 21:44:37 25 4
gpt4 key购买 nike

警告

我想添加一个免责声明来警告此数据库结构。我强烈建议采用更简化的方法。

我个人的偏好是使用分层的一两个表结构来存储导航菜单。有关从平面结构建立菜单的指南,请参阅 https://stackoverflow.com/a/444303/1778606

回答

就我而言,答案是在客户端缓存菜单。如果您愿意,请继续阅读。


我有一个使用多个查询生成的三层菜单。在我继承的应用程序中,有很多用户组。每个用户都可以通过用户组访问 Web 应用程序的不同页面/部分。单个用户可以属于多个用户组。

Permissions and Available Menu Items

在他们的菜单中,每个用户应该只能查看和访问他们的组有权访问的页面。 IE。每个用户只应看到某些菜单项、菜单子(monad)菜单部分和菜单子(monad)菜单部分项目。数据透视表控制可见性和访问。

为了生成菜单,我需要进行几个查询。我建议的菜单设计示例如下所示。

Proposed Menu Design

根据用户有权访问的第 1 层、第 2 层或第 3 层项目,此菜单看起来截然不同。

在 session 中为每个用户缓存整个菜单而不是为每个页面加载生成它是否合适?这是否可能需要缓存太多数据?我主要担心的是,它会为 session 中的每个事件用户缓存所有三个表(Tier1、Tier2、Tier3)。无论如何,我需要访问数据以查看用户是否具有权限,但是,嗯!

是否有任何架构设计可以帮助减少生成菜单所需的查询数量? (假设菜单是在每个页面加载时生成的,正如我开始编写这个问题时所假设的那样)

这种菜单在应用程序中正常吗?我们有大约 20 个组,用户分布在 2 个到全部 20 个组中?欢迎任何建议或意见。

(我想最大限度地减少页面加载和处理时间。)

上下文:我正在使用 c#、asp.net mvc3、oracle。最大用户群估计约为 20,000 人。最大活跃用户基数接近 1000。可能的活跃用户基数为 100。

最佳答案

首先当用户登录时,然后在缓存中加载登录用户下允许的菜单。然后从该用户的缓存中访问菜单/子菜单。当用户注销时清除缓存。在这种情况下,每次新用户登录时,只会为该用户加载缓存。

谢谢

关于asp.net-mvc-3 - 减少菜单生成时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19749939/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com