мы запускаем наше приложение 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, но мы не можем точно определить проблему. Кто-нибудь когда-нибудь испытывал это?
С уважением