php - 将 Laravel 特定会话变量设置为在一段时间后过期
问题描述
我在我网站上的统计页面上工作,我需要将一般会话变量保持在正常持续时间(例如:120 分钟)但我也想存储我的一些变量,所以我不必在每个页面重新加载时执行 8 个 SQL 查询例如,我想保存过去 30 天中每一天的用户帖子计数,但它经常变化,所以只想保存 10 分钟我怎样才能只在 10 分钟后删除会话中的特定变量但保留另一个还活着?
我考虑过保存上次刷新时间和每次重新加载检查是否为 10 分钟
Session::put('lastRefresh', Carbon::now()->timestamp);
在缓存中我会这样做
Cache::put('posts', $posts, 10);
但它对每个用户都是独一无二的,所以我不能有时它只是一个大数组(90 天 90 项)所以我不能使用 cookie:P
只是不知道这是否是最好或最有效的方法
解决方案
由于它对每个用户都是唯一的,因此您可以命名缓存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,缓存过期时间现在以秒为单位,而不是分钟。
推荐阅读
- python - 使用延迟从powershell循环调用python
- python - VScode:如何调试 python 2.7 cgi 脚本?
- openshift - Openshift:如何创建具有 SYS_LOCK 功能的 scc
- ios - 构建中缺少 iOS XCode 功能
- javascript - 按确定后更改现有警报上的甜蜜警报文本
- javascript - 使用自身重新定义数组
- sapui5 - m.IconTabBar:如何使标签的内容可滚动?
- google-cloud-storage - Google 存储 - 公共链接复选框消失了
- solr - 是否可以只使用一个字段来索引繁体和简体中文?
- python - Python语音识别pyaudio错误