我正在将一个外部 API 的响应缓存到 Rails 中。我从缓存中读取并按预期返回 nil。我将其存储到缓存中,它返回 true,我再次读取它并返回我的值,但是如果我使用相同的参数从客户端发出另一个请求,它会返回 nil,就像该值未被存储一样。
def create
cache = ActiveSupport::Cache::MemoryStore.new
url = "http://api.openweathermap.org/data/2.5/weather?zip=" + params[:zip] +"&units=imperial&APPID=4e66533961b500086bf6bd7c37d4b847"
@weather = fetch_weather(url)
p cache.read(params[:zip])
weather = cache.read(params[:zip])
p weather
p weather.nil?
if weather.nil?
cache.write(params[:zip],@weather,:expires_in => 30.minutes)
end
p cache.read(params[:zip])
render json: @weather
end
nil
nil
true
<RestClient::Response 200 "{\"coord\":{\"...">
我将再次使用相同的邮政编码运行它并获得相同的响应。我已在我的开发环境中启用了缓存,但我不确定为什么它不起作用。谢谢。