ruby-on-rails – 将从传递给Rails.cache.fetch的块返回一个nil
发布时间:2020-12-17 02:14:20 所属栏目:百科 来源:网络整理
导读:我们假设我有一个这样的方法: def foo Rails.cache.fetch("cache_key",:expires_in = 60.minutes) do return_something end end return_something有时会返回一个nil值.发生这种情况时,我不希望将nil值缓存60分钟.相反,下次我调用foo时,我希望传递给fetch的
我们假设我有一个这样的方法:
def foo Rails.cache.fetch("cache_key",:expires_in => 60.minutes) do return_something end end return_something有时会返回一个nil值.发生这种情况时,我不希望将nil值缓存60分钟.相反,下次我调用foo时,我希望传递给fetch的块再次执行. Rails.cache.fetch默认是这样工作的吗?或者我必须实现此功能吗? 更新(带答案) 事实证明,答案是否定的,至少在使用Memcached时. 解决方法
它取决于您正在使用的缓存存储的实现.我会说它不应该缓存nil值,但空字符串可以缓存.
看看dalli store implementation即: def fetch(name,options=nil) options ||= {} name = expanded_key name if block_given? unless options[:force] entry = instrument(:read,name,options) do |payload| payload[:super_operation] = :fetch if payload read_entry(name,options) end end if !entry.nil? instrument(:fetch_hit,options) { |payload| } entry else result = instrument(:generate,options) do |payload| yield end write(name,result,options) result end else read(name,options) end end (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- c# – MiniProfiler是否可以在ASP.NET MVC2中运行?
- ruby-on-rails – Ruby omniauth-oauth2 – 一个Errno :: E
- DirectUI界面编程(三)从XML文件中加载界面
- React Native 红屏问题的解决
- c# – 如何在抽象类的静态属性中使用HttpContext.Current.S
- 解决structs2 找不到类 / structs.xml 文件在action class
- Flex Tree 组件使用的两个小技巧
- 9.打开ie进的窗口很小怎么办:
- Swift获取命名空间(namespace),动态加载类
- 2.4 Swift数学运算符号