我们在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标头的方式可能有问题但我们无法查明问题。有没有人经历过这个?
亲切的问候
答案 0 :(得分:0)
我们在配置客户端的机架缓存时使用此选项修复了它:
ignore_headers: ['X-Content-Digest']
有关此修复原因的详细信息,请参阅此帖:https://github.com/rtomayko/rack-cache/issues/59