我正在我网站的统计信息页面上工作, 并且我需要将常规会话变量保持为正常时长(例如:120分钟) 但我也想存储一些变量,因此我不必在每次重新加载页面时都执行8个SQL查询 例如,我想保存过去30天的每一天的用户帖子数,但是它经常更改,因此只想保存10分钟 我如何才能仅使会话中的特定变量在10分钟后删除,而使其他变量保持活动状态?
我已经考虑过保存上一次刷新时间,并且每次重新加载检查是否都在10分钟之内
Session::put('lastRefresh', Carbon::now()->timestamp);
在缓存中,我会做
Cache::put('posts', $posts, 10);
但是它对每个用户都是唯一的,所以我不能 有时它只是一个很大的数组(90天90个项目) 所以我不能使用cookie:P
只是不知道它是最好还是最有效的方式
答案 0 :(得分:0)
由于每个用户都是唯一的,因此可以为缓存key
命名空间以标识用户:
Cache::put('user_' . auth()->user()->id . '_posts', $posts, 10);
or
cache(['user_' . auth()->user()->id . '_posts' => $posts], 10);
然后您可以使用:
Cache::get('user_' . auth()->user()->id . '_posts');
or
cache('user_' . auth()->user()->id . '_posts');
注意::如果使用laravel 5.8,缓存过期时间现在是秒,而不是分钟。