有人能指出我正确的技术与缓存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本身,结果呈现几乎是即时的。你知道任何提示和技巧吗?
感谢。
答案 0 :(得分:1)
这应该
if response.success?
response.parsed_response
else