缓存对我来说似乎很复杂。有太多的缓存方式,我当然无法遵循它们中的任何一种。在我的应用程序中,对于每个用户,在他的个人资料中我显示了24个随机用户:
@random_users = User.random(24)
现在我想为每个用户缓存24小时的结果。因此,用户A登录并且查询仅在24小时内运行一次。然后用户B登录并发生同样的事情。但是,我希望单独存储每个用户的缓存结果。这意味着,如果用户B在用户A之后登录,我不希望用户A的缓存过期。我怎样才能做到这一点?
答案 0 :(得分:1)
为此,您必须为每个用户使用不同的缓存键,以便为每个用户单独保存此信息。例如,你可以做
@random_users = Rails.cache.fetch "random_uses_for_user_#{current_user.id}", :expire_in => 24.hours do
...
end
假设current_user
是您要获取此信息的用户。