Laravel 5.1 开启 Entrust 的用户组和权限缓存
说明
在调优 PHPHub 的时候发现 Entrust 居然没有缓存,帖子列表里有很多权限判断,一眼扫过去密密麻麻的用户组和权限的数据请求:
解决
配置信息里面没有找到可以设置缓存的地方,查看 源代码 2f97b7c 后发现原来是使用了 config/cache.php
的 ttl
选项。
解决方法是在 config/cache.php
里加上:
'ttl' => 60
然后,一切都正常了:
很奇怪为啥没写到官方文档里面。
注意
Entrust 缓存只能在支持 Cache Tag 的缓存系统下使用,不支持数据库缓存和文件缓存。
Homestead 里默认支持 redis 和 memcached 缓存系统。如果你是生产环境的话,是时候切换成专业缓存系统了,如果是其他情况,可以使用 array 缓存驱动也可以快速看到效果。
summer
本帖已被设为精华帖!
本帖由 Summer
于 8年前 加精
这问题我也发现了,
clockwork
总是发现 sql 取 roles 、permissions 查看代码才发现,需要配置cache.ttl
. @Summer 反馈下,咱英文很不咋地。我也遇到这个情况了,所以就把权限判断存到一个变量里,后续都拿变量。原来官方有给出缓存,我以为是我使用方式不对
Cool!!!
为什么我设置了没作用呢
@aishan 我更新了下文章,看
注意
那个章节,应该是你的缓存驱动不对。嗯,我默认用的是redis,也试过切到array,都没反应。顺带说一句,为什么phphub不让更改用户头像
@aishan 你找过修改头像没找到?
@aishan 修改了一下,你现在再找找看能找到不。
@Summer 找到问题了,是adblock屏蔽了头像上传控件:sweat_smile:
@aishan 用一下这个方法监控下 redis :https://phphub.org/topics/2585#reply2
如果压根都没 set 的话,很有可能是你用了老版本,这个功能是 2015 年 11 月份才有的, commit 在这里 https://github.com/Zizaco/entrust/commit/1...
很有可能 ,我试试,感谢
@Summer 请问你用的是什么浏览器插件?还能看到sql语句?
@张华 Laravel-debugbar,Laravel 开发者必装插件之一,具体可看 这篇帖子 的介绍。
@Aufree 谢谢