我需要获得缓存条目的过期或创建时间。
这适用于:sitemap index,索引中的每个站点地图都是缓存操作。我想补充一下
<lastmod>
属性,在我的例子中,将是缓存条目创建时间。
例如,对于动作缓存:
class ProductsController < ActionController
caches_action :index
def index
@products = Product.all
end
end
我需要这样的东西:
Rails.cache.get(:controller=>'products',:action=>'index').created_at
答案 0 :(得分:5)
我找到了解决方案,它适用于所有流行的缓存存储(使用redis_store,mem_cache_store,memory_store,file_store测试)。
Time.at(Rails.cache.send(:read_entry,'cache/entry/key',{})).created_at)
read_entry
方法返回ActiveSupport::Cache::Entry
对象(class documentation)
答案 1 :(得分:1)
对于子孙后代,在Rails 4.2+中,您可以通过类似的方式访问@ rogal111的答案......
Time.at(Rails.cache.send(:read_entry, key, {}).expires_at)
# And
Rails.cache.send(:read_entry, key, {}).expired?
但除非你想要进入对象,否则你无法访问created_at
。
为此,您需要为
的效果做些什么Rails.cache.send(:read_entry, key, {}).instance_variable_get('@created_at')