the*_*art 7 caching ruby-on-rails ruby-on-rails-4
我正在使用Rails.cache来缓存来自API的响应:
Rails.cache.fetch("key") do
api.get "/api/data"
api.body
end
Run Code Online (Sandbox Code Playgroud)
API不是很可靠,偶尔我会收到500错误.我想避免缓存500响应.
Rails.cache.fetch("key") do
api.get "/api/data"
if api.body.meta.status == 500
# Bail out, Goose!
end
api.body
end
Run Code Online (Sandbox Code Playgroud)
我宁愿不提出异常.没有缓存的"拯救"块的最佳方法是什么?
我自己刚刚遇到了这个break问题,看起来会解决我们的问题。我只是在本地针对 memory_store 和 dalli_store 测试了它,它避免了缓存块。因此,对于您的示例,请尝试以下操作:
Rails.cache.fetch("key") do
api.get "/api/data"
break if api.body.meta.status == 500
api.body
end
Run Code Online (Sandbox Code Playgroud)
作为旁注,如果使用 dalli_store 它不会缓存 nil 值,因此您可以从块中返回 nil。
| 归档时间: |
|
| 查看次数: |
2456 次 |
| 最近记录: |