为了账号安全,请及时绑定邮箱和手机立即绑定

php使用文件缓存菜单,和session缓存菜单谁效率更好

php使用文件缓存菜单,和session缓存菜单谁效率更好

PHP
婷婷同学_ 2019-03-07 19:40:25
每次进入后台时都需要加载各种菜单,鉴于如果每次请求数据库会大量消耗资源,所以打算用两种缓存方式解决:1.session2.文件缓存注:kv数据库后期才会考虑 但是每个用户的权限不同,所以菜单也不同,所以如果用session的方式会导致分配菜单后不能及时显示,得退出重新登录方可,如果用文件方式,即可分配菜单时删除缓存文件,以上两种方式希望大家能讨论讨论,提供点思路谢谢!
查看完整描述

14 回答

?
慕桂英3389331

TA贡献2036条经验 获得超8个赞

最终选择了文件方式存储,感谢各位的回答

查看完整回答
反对 回复 2019-03-18
?
神不在的星期二

TA贡献1963条经验 获得超6个赞

如果后台有多台服务器怎么办?

查看完整回答
反对 回复 2019-03-18
?
有只小跳蛙

TA贡献1824条经验 获得超8个赞

就个人建议,更加建议使用缓存

  1. 使用缓存可以配合一些动态更新的套件实现某些数据更新时缓存即时更新
  2. 使用缓存后期可以直接切换底层持久化方案,不会带来更多的的代码改动
  3. 使用session涉及到如果用户重新登录时session一旦被更新则需要重新计算

ps: 文件缓存建议分层架构即,应用层表现为kv保存,菜单信息使用json这类的序列化方法作为v存在,底层使用文件储存的方式对应用层的kv数据进行保存

查看完整回答
反对 回复 2019-03-18
?
繁华开满天机

TA贡献1816条经验 获得超4个赞

难道session不是文件存储吗

查看完整回答
反对 回复 2019-03-18
?
不负相思意

TA贡献1777条经验 获得超10个赞

就我的后台系统说说,因为我大部分系统的后台都是有百八十人的各类型的用户在使用.
先上方案:用户登录后=载入组别json+黑名单权限json=个人菜单.
比如超市系统中的经理,一级管理,二级管理之类,店员,收银员,仓库管理员...之类的.
通常确权清楚的情况下,直接就生成分组级别的json文件.而不是根据用户去生成,这样的话就很省开销了.
但是有时候也有一些特殊情况,比如某个店员被禁止了某个权限从而禁止了某个菜单.
这个时候,还是json文件的菜单,但是附带了一个被过滤权限的json.
所以他显示的是过滤后的菜单.
都是这样设计的,这么多年没有客户反映过问题.

查看完整回答
反对 回复 2019-03-18
?
ITMISS

TA贡献1871条经验 获得超8个赞

如果用session的方式会导致分配菜单后不能及时显示,得退出重新登录方可,如果用文件方式,即可分配菜单时删除缓存文件

楼主说到分配权限不能及时更新的问题,其实与用文件缓存还是用session不是一回事。
因为session实现的功能其实也是“缓存”,只要是缓存,就会存在“不及时”的问题,同样,只要你重新分配权限后及时更新缓存,那么,权限分配也就不会有“不及时”的情况出现。

查看完整回答
反对 回复 2019-03-18
?
大话西游666

TA贡献1817条经验 获得超14个赞

session浪费服务器性能啊

查看完整回答
反对 回复 2019-03-18
?
Smart猫小萌

TA贡献1911条经验 获得超7个赞

题主要的是解决办法,不是哪种存储方式好。
ps:感觉你们都是来娱乐的咧。

查看完整回答
反对 回复 2019-03-18
?
眼眸繁星

TA贡献1873条经验 获得超9个赞

session可以存储在文件或者Redis等其他缓存系统

这个问题并不是考虑菜单存储问题,
而是考虑菜单是否全局存储并全局共享

通常做法是

  1. session缓存用户登录权限
  2. 整个菜单进行缓存
  3. 根据权限,去对应的用户菜单
查看完整回答
反对 回复 2019-03-18
  • 14 回答
  • 0 关注
  • 709 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信