假设我在 laravel 中缓存查询:
return Cache::remember('posts.all', 20, function(){
return Post::all();
});
一切都好。
我的问题是,如果我想对帖子示例应用过滤,获取上周的帖子
Post::whereBetween('created_at', [$from, $to])->get();
如果用户从上个月的时间选择器示例中选择了不同的日期,这将如何与缓存一起使用?
最佳答案
如果您这样做,将为所有用户提供相同的缓存结果。如果你想cache user specific data ,您需要将用户ID添加到 key 中:
Cache::remember('posts.all.' . auth()->id(), 20, function() use($from, $to) {
return Post::whereBetween('created_at', [$from, $to])->get();
});
然后获取数据:
cache('posts.all.' . auth()->id())
更新
为了让 Laravel 刷新缓存的查询结果,您还需要缓存起止日期并检查这些。
if (cache('from' . auth().id()) !== $from || cache('to' . auth().id()) !== $to) {
Cache::forget('posts.all.' . auth().id());
}
关于Laravel 缓存与时间过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48841796/