Laravel 5.1 开启 Entrust 的用户组和权限缓存

说明

在调优 PHPHub 的时候发现 Entrust 居然没有缓存,帖子列表里有很多权限判断,一眼扫过去密密麻麻的用户组和权限的数据请求:

file

解决

配置信息里面没有找到可以设置缓存的地方,查看 源代码 2f97b7c 后发现原来是使用了 config/cache.phpttl 选项。

解决方法是在 config/cache.php 里加上:

'ttl' => 60

然后,一切都正常了:

file

很奇怪为啥没写到官方文档里面。

注意

Entrust 缓存只能在支持 Cache Tag 的缓存系统下使用,不支持数据库缓存和文件缓存。

Homestead 里默认支持 redis 和 memcached 缓存系统。如果你是生产环境的话,是时候切换成专业缓存系统了,如果是其他情况,可以使用 array 缓存驱动也可以快速看到效果。

summer

摈弃世俗浮躁,追求技术精湛
本帖已被设为精华帖!
本帖由 Summer 于 7年前 加精
Summer
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 14
jasonchang

这问题我也发现了, clockwork 总是发现 sql 取 roles 、permissions 查看代码才发现,需要配置 cache.ttl. @Summer 反馈下,咱英文很不咋地。

7年前 评论

我也遇到这个情况了,所以就把权限判断存到一个变量里,后续都拿变量。原来官方有给出缓存,我以为是我使用方式不对

7年前 评论
Destiny

Cool!!!

7年前 评论

为什么我设置了没作用呢

7年前 评论
Summer

@aishan 我更新了下文章,看 注意 那个章节,应该是你的缓存驱动不对。

7年前 评论

嗯,我默认用的是redis,也试过切到array,都没反应。顺带说一句,为什么phphub不让更改用户头像

7年前 评论
Summer

@aishan 你找过修改头像没找到?

7年前 评论
Summer

@aishan 修改了一下,你现在再找找看能找到不。

7年前 评论

@Summer 找到问题了,是adblock屏蔽了头像上传控件:sweat_smile:

7年前 评论
Summer

@aishan 用一下这个方法监控下 redis :https://phphub.org/topics/2585#reply2

如果压根都没 set 的话,很有可能是你用了老版本,这个功能是 2015 年 11 月份才有的, commit 在这里 https://github.com/Zizaco/entrust/commit/1...

7年前 评论

很有可能 ,我试试,感谢

7年前 评论

@Summer 请问你用的是什么浏览器插件?还能看到sql语句?

7年前 评论

@张华 Laravel-debugbar,Laravel 开发者必装插件之一,具体可看 这篇帖子 的介绍。

7年前 评论

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