Laravel 4 app数据库缓存查询到基于文件的现金,但似乎在用户之间共享。
下面的MySQL查询在用户登录到我的系统时加载一些用户权限设置。
当我检查我的/app/storage/cache/
文件夹时,它似乎只生成一个文件,而不管其他用户使用该系统。
因为它似乎基本上是为第一个用户的MySQL查询创建一个缓存,然后其他用户最终被服务于第一个用户缓存的结果!
$permissions_query = DB::table('user_link_permissions')
->select(DB::raw('user_link_permissions.link_id,
user_link_permissions.permission,
intranet_links.entity_key'))
->leftJoin('intranet_links', function($leftJoin)
{
$leftJoin->on('user_link_permissions.link_id', '=', 'intranet_links.id');
})
//->where('user_link_permissions.permission', 1)
->where('user_link_permissions.user_id', $user_id)
->orderBy('parent', 'asc')
->remember(10, 'user_permissions')
->get();
->remember(10, 'user_permissions')
行是我缓存结果的地方
这听起来像是DB缓存机制的正确默认行为,我只是没有正确地做它吗?
也许我应该做一个cache key
与用户ID在它?
这确实是预期的行为。
正如您自己回答的那样,在缓存密钥中使用某种用户令牌。否则缓存机制无法知道你不希望所有用户共享同一个查询。
->remember(10, 'user_permission' . $user_id)