MemoryStore 中的 max_prune_time 是什么?
What is max_prune_time in MemoryStore?
在MemoryStore的初始化方法中,max_prune_time
可以作为一个选项传递。
它的目的是什么?
此外,
@max_prune_time = options[:max_prune_time] || 2
默认单位是什么?秒?
max_prune_time
是 Rails 释放内存的最长时间(以秒为单位),如果缓存存储耗尽内存,则通过删除旧条目来释放内存。具体见prune
方法的实现:
def prune(target_size, max_time = nil)
# ...
start_time = Time.now
cleanup
instrument(:prune, target_size, :from => @cache_size) do
keys = synchronize{ @key_access.keys.sort{|a,b| @key_access[a].to_f <=> @key_access[b].to_f} }
keys.each do |key|
delete_entry(key, options)
return if @cache_size <= target_size || (max_time && Time.now - start_time > max_time)
end
end
# ...
end
在MemoryStore的初始化方法中,max_prune_time
可以作为一个选项传递。
它的目的是什么?
此外,
@max_prune_time = options[:max_prune_time] || 2
默认单位是什么?秒?
max_prune_time
是 Rails 释放内存的最长时间(以秒为单位),如果缓存存储耗尽内存,则通过删除旧条目来释放内存。具体见prune
方法的实现:
def prune(target_size, max_time = nil)
# ...
start_time = Time.now
cleanup
instrument(:prune, target_size, :from => @cache_size) do
keys = synchronize{ @key_access.keys.sort{|a,b| @key_access[a].to_f <=> @key_access[b].to_f} }
keys.each do |key|
delete_entry(key, options)
return if @cache_size <= target_size || (max_time && Time.now - start_time > max_time)
end
end
# ...
end