rest-client не кэширует ответы от Heroku

мы запускаем наше приложение Ruby on Rails (4.0) (назовем его: 'carwow') на Heroku, URL-адрес http://www.carwow.co.uk в ответе нашего контроллера мы устанавливаем срок действия HTTP-кэширования:

expires_in XXX.seconds, :public => true

Теперь давайте попробуем запустить на 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' не будет использовать кэшированную версию и отобразит следующее: cache: [GET] miss, store

Второй запрос к github отобразит кеш: [GET] свежий

Когда мы запускаем приложение «carwow» локально как в режиме разработки, так и в режиме производства (сервер единорога, как на Heroku), второй запрос отображает кеш: [GET] свежий

Мы начали думать, что может быть что-то не так в том, как мы устанавливаем заголовки HTTP, но мы не можем точно определить проблему. Кто-нибудь когда-нибудь испытывал это?

С уважением


person Federico Rebora    schedule 01.08.2014    source источник
comment
Можете ли вы показать, какие заголовки HTTP возвращаются?   -  person Nitzan Shaked    schedule 03.08.2014
comment
Мы действительно нашли решение, смотрите ответ ниже   -  person Federico Rebora    schedule 04.08.2014


Ответы (1)


Мы исправили это с помощью этой опции при настройке стоечного кеша клиента:

ignore_headers: ['X-Content-Digest']

Более подробную информацию о причинах, по которым это исправляет это, можно найти в этом сообщении: https://github.com/rtomayko/rack-cache/issues/59

person Federico Rebora    schedule 04.08.2014