rest-client没有缓存Heroku的响应

时间:2014-08-01 10:21:47

标签: ruby-on-rails caching heroku rest-client http-caching

我们在Heroku上运行我们的Ruby on Rails(4.0)应用程序(称之为' carwow'),url是http://www.carwow.co.uk我们的控制器响应我们设置http缓存过期时: / p>

expires_in XXX.seconds,:public =>真

现在,让我们尝试在ruby控制台上运行以下代码:(您需要先运行gem install rest-client-components):

require 'restclient/components'
require 'rack/cache'

RestClient.enable Rack::Cache, :metastore => 'file:/tmp/cache/meta', :entitystore => 'file:/tmp/cache/body'

RestClient.get('http://www.carwow.co.uk'); nil
RestClient.get('http://www.carwow.co.uk'); nil

RestClient.get('https://api.github.com/users/octocat/orgs') ; nil
RestClient.get('https://api.github.com/users/octocat/orgs') ; nil

对carwow'的第二个请求。将不使用任何缓存版本,它将显示以下内容: 缓存:[GET] miss,store

将显示对github的第二个请求 缓存:[GET]新鲜

当我们运行' carwow'在开发和生产模式下本地应用程序(像Heroku上的unicorn服务器)显示第二个请求 缓存:[GET]新鲜

我们开始相信我们设置HTTP标头的方式可能有问题但我们无法查明问题。有没有人经历过这个?

亲切的问候

1 个答案:

答案 0 :(得分:0)

我们在配置客户端的机架缓存时使用此选项修复了它:

ignore_headers: ['X-Content-Digest']

有关此修复原因的详细信息,请参阅此帖:https://github.com/rtomayko/rack-cache/issues/59