动态菜单

动态菜单与权限的绑定实现如何优化的?

非iframe时如果想要渲染菜单,每个用户的权限不同,渲染出来的菜单也不同,我假设每次根据权限去寻找菜单,推出菜单列表给前台渲染,将该此渲染结果与用户绑定缓存起来

那么:1.每次对权限的操作要全量刷新同类缓存吗
2.就算缓存起来,每次请求也需要重新渲染菜单块
3.如果将渲染成功的页面缓存,那么如何标识什么时候需要被重新渲染

第一次考虑动态菜单与权限的绑定…没能有好的方案,大佬们如何实现的希望分享一下…

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 3

菜单与权限是个低频操作,且管理员人数有限,个人感觉没必要考虑过多,

单纯缓存数据可以简单粗暴CURD后清空所有符合条件的缓存

如果将渲染成功的页面缓存,那么如何标识什么时候需要被重新渲染

可以考虑CURD后删除缓存页面,或读取页面时根据时间判断,页面的生成时间和相关表的最后修改时间做对比

1个月前 评论
oursdreams (楼主) 1个月前

1、生效问题

技术不能解决所有问题,产品逻辑约定好:重新登录,菜单才会生效

2、缓存问题

  • 全量菜单基本是固定,可以存缓存
  • 进一步可以考虑缓存对应角色权限数据,更新角色,重新生成缓存

上面两种数据缓存了,动态生成菜单就是靠代码控制下了

1个月前 评论

用户增加虽然很频繁,菜单或角色(如果有角色这么个东东)的改动应该不会很频繁
新增开通权限和分配对应菜单,对原有菜单和权限没有影响,此时对旧缓存无需操作

具体问题还是要具体分析
新增菜单没关系,用户默认就是不可见
修改或删除菜单,此时绝大部分人的缓存都要修改,可以强制清空所有缓存,或者筛选出有此菜单的用户或角色清空缓存

我之前的做法是,每次刷新页面都会读取缓存,没有缓存去数据库找然后再缓存,因为后台修改会清空缓存,所以没有单独的用户登录后设置缓存,这样可以达到有修改实时改变。

1个月前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!