第一次尝试在 Rails 中缓存,甚至不知道从哪里开始



第一次尝试在应用程序中实际实现缓存,我发现它真的很困惑。即使读了这篇深入的文章我还是很迷茫。

我决定从简单开始。在我正在制作的测试应用程序中,我有以下API调用块:

def get_champion
        champion_url = "#{BASE_URL}/api/lol/static-data/na/v1.2/champion#{API_KEY}"
        parse_json(champion_url)
    end

我认为这是我缓存的最佳位置,因为从该调用返回的数据始终是静态的。

我在这里缓存的最好方法是什么?本文中描述了很多缓存技术,我不知道应该真正使用哪一种。

如果你认为我应该尝试实现一个技术,请让我知道,我会尽我最大的努力实现它。

PS:现在,服务器日志显示

Completed 200 OK in 2860ms (Views: 2858.6ms | ActiveRecord: 0.3ms)

非常高,是吗?

编辑:读完rails文档后,我认为低级缓存可能适合这种情况。

class Product < ActiveRecord::Base
  def competing_price
    Rails.cache.fetch("#{cache_key}/competing_price", expires_in: 12.hours) do
      Competitor::API.find_price(id)
    end
  end
end
在提供的代码中,据说需要生成cache_key。他们是如何生成cache_key的?

低级缓存可以工作,但我认为它驻留在内存中,而不是持久化。如果您不想一直将其保存在内存中,那么下一个最好的方法是将其写入磁盘,然后在发出请求时仅提供此缓存文件。

要做到这一点,你需要将action_caching gem添加到你的Gemfile中(仅适用于Rails 4.0和更高版本):

gem 'actionpack-action_caching'

然后在控制器中添加以下内容:

caches_action :get_champion

就是这样。现在,在第一次发出请求时,它将执行完整的请求并将其输出到缓存文件。后续请求将简单地检索缓存文件。

相关内容

最新更新