从缓存中读取多少个八位字节?

时间:2012-09-22 17:35:33

标签: ruby-on-rails ruby caching

我正在尝试做一个简单的基准测试,以了解在我的Rails站点的每个页面中从缓存中读取了多少个八位字节。我在谈论从Rails.cache中检索数据。

我想在页面底部显示123Ko/145Ko之类的内容。

是否存在执行此任务的gem或者ruby标准库中是否包含某些内容?

1 个答案:

答案 0 :(得分:1)

一个选项是子类化您正在使用的商店,并扩展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')添加到您的环境中。我认为你可以通过这种方式对所有商店进行子类化。