我有一个名为Event的模型。在事件模型中,我有以下代码:
def self.all_events
Rails.cache.fetch("events", expires_in: 2.days) do
Event.all.to_a
end
end
我在控制器中调用all_events
方法。如果上述方法有效,则服务器日志应该仅在第一次调用控制器代码时显示查询,并且在接下来的两天之后每次都应该将事件作为数组存在于内存中 - 对吗?出于某种原因,服务器日志每次都显示数据库查询。如何使缓存工作?
答案 0 :(得分:-1)
您必须在两种环境中正确配置缓存设置。
我更喜欢Redis用于Heroku的生产环境。您可以在开发环境中使用memory_store或file_store选项。 https://elements.heroku.com/addons/heroku-redis
的Gemfile
gem 'redis-rails'
配置/环境/ production.rb
Rails.application.configure do
config.action_controller.perform_caching = true
config.cache_store = :redis_store
end
配置/环境/ development.rb
Rails.application.configure do
config.action_controller.perform_caching = true
config.cache_store = :memory_store
end
您可以在那里找到有关Ruby on Rails缓存的更多详细信息; http://guides.rubyonrails.org/caching_with_rails.html