我正在尝试做一个简单的基准测试,以了解从我的 Rails 站点的每个页面的缓存中读取了多少个八位字节。我说的是从 Rails.cache 中检索的数据。
我想123Ko/145Ko
在页面底部显示类似的内容。
是否存在执行此任务的 gem,或者 ruby 标准库中是否包含某些内容?
我正在尝试做一个简单的基准测试,以了解从我的 Rails 站点的每个页面的缓存中读取了多少个八位字节。我说的是从 Rails.cache 中检索的数据。
我想123Ko/145Ko
在页面底部显示类似的内容。
是否存在执行此任务的 gem,或者 ruby 标准库中是否包含某些内容?
一种选择是对您正在使用的商店进行子类化,并扩展在read_entry
中声明的受保护方法ActiveSupport::Cache::Store
,该方法FileStore
和其他缓存自己的子类。
FileStoreWithReadTracking < ActiveSupport::Cache::FileStore
def start_page
@octets_read = 0
end
def octets_read
@octets_read
end
protected
def read_entry(key, options)
entry = super(key, options)
@octets_read += entry.size if entry
entry
end
end
开始页面时,您可以调用start_page
将八位字节计数清零。由于read_entry
是每次缓存尝试执行读取时使用的低级方法,因此您可以拦截任何读取的数据并在返回之前获取其大小。您可能必须转换size
为八位字节。
要将其设置为您的自定义缓存存储,请添加config.cache_store = FileStoreWithReadTracking.new('/path/to/file/store')
到您的环境中。我认为您可以通过这种方式对所有商店进行子类化。