由于某种原因,以下内容在10秒后不会过期
def rcache_value
@random_val_from_cache = Rails.cache.fetch("random_val_from_cache",:expires_in=>10.seconds) do
rand 10000
end
我在我的应用页脚中输出@random_val_from_cache
。我的参数错了吗?我在Rails 3上。
答案 0 :(得分:0)
好吧,假设您的示例中的语法错误只是SO上的拼写错误,那么问题很可能是因为您正在使用实例变量。缓存的值设置为该实例变量,除非手动完成,否则不会重置该实例变量,除非重新加载该类(在重新启动服务器之前不会发生这种情况)。你应该这样做:
def rcache_value
Rails.cache.fetch("random_val_from_cache", :expires_in => 10.seconds) do
rand 10000
end
end
并将其命名为:
<%= rcache_value %>
答案 1 :(得分:0)
找到答案。在fetch
中不推荐使用expires_in,而是将其设置为write。因此,您必须编写一个检查以查看它是否已存在于缓存中,如果不存在则执行写入