使api请求缓存失效

时间:2014-01-29 23:12:05

标签: ruby-on-rails-3 caching

我已经实现了基于http://robots.thoughtbot.com/caching-api-requests的API缓存。我正在使用内存作为存储。如何在不重新启动服务器的情况下手动重置缓存?

我尝试过使用Rails.cache.clear,但似乎没有用。数据仍然从缓存中提取。我通过观察服务器日志检查了我的puts消息(如下所示)。

缓存代码:

module Meh
  class Api
    include HTTParty

    #...

    cache_name = options[:path] + "/" + options[:params].values.join(",")

    response = nil
    APICache.get(cache_name, cache: 3600) do
      response = self.class.get options[:path], query: options[:params]

      # For future debugging
      puts "[API] Request: #{response.request.last_uri.to_s}"

      # Just return nil if there's an error with the request, for now
      if response.code == 200
        response.reverse!
      else
        response = nil
      end
    end
end

1 个答案:

答案 0 :(得分:1)

您是否尝试过'rake tmp:cache:clear'或手动删除tmp / cache /的内容?

您是否尝试从代码中删除缓存内容?

通过api_cache gem读取,看起来这是一个内存缓存,而不是文件缓存。这与您的报告一致。看起来APICache api上还有一个.delete方法。链接所以APICache.delete(cache_name)可能正是您要找的。