Ruby on rails 在rails应用程序中缓存对外部API的调用
rails应用程序(4)使用HTTParty调用外部API。API是只读的。缓存是必需的,因为数据不会经常更改(24小时),并且API每小时只允许有限数量的调用 我想我需要某种基于哈希的缓存,在这里我将使用“params/sent/to/the/api”作为键。 用于缓存的Rails工具似乎只用于页面、片段或SQLRuby on rails 在rails应用程序中缓存对外部API的调用,ruby-on-rails,api,caching,Ruby On Rails,Api,Caching,rails应用程序(4)使用HTTParty调用外部API。API是只读的。缓存是必需的,因为数据不会经常更改(24小时),并且API每小时只允许有限数量的调用 我想我需要某种基于哈希的缓存,在这里我将使用“params/sent/to/the/api”作为键。 用于缓存的Rails工具似乎只用于页面、片段或SQL 如何缓存对外部API的调用?应该是这样的。基本上,Rails.cache.fetch调用将包装您的API调用。除非缓存已过期,否则它不会命中API class Results
如何缓存对外部API的调用?应该是这样的。基本上,Rails.cache.fetch调用将包装您的API调用。除非缓存已过期,否则它不会命中API
class Results
def get(url, params)
Rails.cache.fetch([url, params], :expires => 1.hour) do
HTTParty.get('url/to/api')
end
end
end
确保在您的环境中设置了缓存。Memcache在这方面非常有用。为最多有5000个条目的缓存安装服务器不是很过分吗?运行Memcache很容易,但为了保持简单,您可以使用几种不同的缓存方式—文件服务器可能就是您想要的。我对文件缓存没有太多的研究,不知道expires在那里是如何工作的。@Syl正如Swards指出的那样,不需要单独的缓存服务器,但即使选择使用memcached,也不复杂。这是一个安装和运行非常简单的服务。