我正在尝试做一个简单的基准测试,以知道从我的Rails站点的每个页面的缓存中读取了多少个八位字节。我正在谈论从Rails.cache中检索数据。从缓存中读取多少个字节?
我想在我的页面底部显示类似123Ko/145Ko
的内容。
是否存在执行此任务的宝石,或者是否有某种东西包含在ruby标准库中?
我正在尝试做一个简单的基准测试,以知道从我的Rails站点的每个页面的缓存中读取了多少个八位字节。我正在谈论从Rails.cache中检索数据。从缓存中读取多少个字节?
我想在我的页面底部显示类似123Ko/145Ko
的内容。
是否存在执行此任务的宝石,或者是否有某种东西包含在ruby标准库中?
一种选择是将您正在使用的商店子类化并扩展ActiveSupport::Cache::Store
中声明的受保护read_entry
方法,其中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')
添加到您的环境中。我想你可以用这种方式将所有商店分类。
这毕竟有点容易!感谢您指出我的解决方案! –
你在说什么缓存?有很多! –
我在说Rails.cache。我更新了这个问题! –
@JohnMcKey你配置了哪个缓存? (什么是'Rails.cache.class'?) – cdesrosiers