我的Rack :: Cache被设置为堆栈中最顶层的(最后一个)中间件。我的应用程序托管在heroku雪松上,因此Rack :: Cache也负责静态资产。Rack :: Cache的性能不佳
它是由Heroku的memcached的产品支持,并配置是这样的:
config.action_dispatch.rack_cache = {
:metastore => Dalli::Client.new,
:entitystore => 'file:tmp/cache/rack/body',
:allow_reload => false
}
config.static_cache_control = "public, max-age=2592000"
它薄运行。
我使用ab测试映像文件的性能。在我的日志
ab -n100 -c10 https://example.com/foo.jpg
来看,所有的请求都缓存命中( “新鲜”)。但是性能很差,只有大约6个请求/秒。我知道Rack :: Cache的性能不如专用的http代理,但我当然期望比这更高的吞吐量。
更新 我不知道我以前没怎么想过,但我的基准确实超出了我的互联网连接。如果我使用robots.txt而不是jpg来做同样的测试,我会得到20个请求/秒(并且仍然是最大的下游)。
你可以使用Rack :: Cache进行测试吗?没有给我们结果吗? – 2012-04-01 19:36:45
很好的问题。没有Rack :: Cache,它是3请求/秒。 – 2012-04-01 21:38:37