在rails 2.3中缓存所有数据库查询

时间:2012-09-19 03:10:49

标签: mysql ruby-on-rails caching memcached

如何缓存我的所有查询。

第一次请求:

@user = User.all

第二次请求

@user = User.all # Cached

有没有有用的插件可以做到这一点?

我正在制作模式。我似乎无法看到任何缓存的短语来确认我的rails应用程序正在缓存。

1 个答案:

答案 0 :(得分:0)

在config / environments / production.rb

config.action_controller.perform_caching = true

默认情况下,禁用缓存进行开发和测试,并启用生产。

查询缓存是一种Rails功能,它缓存每个查询返回的结果集,这样如果Rails再次遇到该请求的相同查询,它将使用缓存的结果集,而不是再次对数据库运行查询。 / p>

例如:

 class UsersController < ActionController

 def index
   # Run a find query
   @users = User.all

   ...

   # Run the same query again
  @users = User.all

   end

 end

第二次对数据库运行相同的查询时,它实际上不会命中数据库。第一次从查询返回结果时,它将存储在查询缓存中(在内存中),第二次从内存中提取。

在您的控制台上查看

  

用户加载(?ms)SELECT User。* FROM User

     

完成200 OK in?ms(视图:?ms | ActiveRecord:?ms)

您可以将其与首次加载和第二次加载进行比较。

您可以使用https://github.com/mperham/dalli中的Dalli gem将缓存存储到memcached服务器。