开始API缓存

时间:2014-08-02 12:40:53

标签: ruby-on-rails ruby ruby-on-rails-3 caching ruby-on-rails-4

有人能指出我正确的技术与缓存API响应有关。

我已经通过很多现有的问题,指南,帖子,但某些关键因素无法正常运作。

模型

class Cleartrip
  include HTTParty

  debug_output $stdout

  base_uri "api.staging.cleartrip.com/air/1.0/search"
  headers 'X-CT-API-KEY' => 'xxxxxxxxxxxxxxxxxxxxxxxxxxx'
  format :xml

  def self.get_flight(url)
    Rails.cache.fetch(url, :expires => 1.hour) do
      response = get(url) 
      if response.success?
        response
      else
        raise response.message
      end
    end

  end
end

控制器

@flight = Cleartrip.get_flight("?from=DEL&to=BLR&depart-date=2014-08-10&adults=1&children=0&infants=0")

Development.rb

  config.cache_classes = false

  # Do not eager load code on boot.
  config.eager_load = false

  # Show full error reports and disable caching.
  config.consider_all_requests_local       = true
  config.action_controller.perform_caching = true
  config.cache_store = :null_store

而不是:null_store,之前我有:memory而我收到Type Error: Can't dump IO

即使使用当前配置,每次重新加载时它都会到达服务器并花费大量时间来显示结果。

需要做什么?对于这个问题,哪种技术或宝石负责缓存?有许多航班搜索网站,如Google.com/flights或Cleartrip.com本身,结果呈现几乎是即时的。你知道任何提示和技巧吗?

感谢。

1 个答案:

答案 0 :(得分:1)

这应该

if response.success?
        response.parsed_response
else