【问题标题】:Cache all database queries in rails 2.3在 Rails 2.3 中缓存所有数据库查询
【发布时间】:2012-09-11 08:50:12
【问题描述】:

如何缓存我的所有查询。

第一个请求:

@user = User.all

第二次请求

@user = User.all # Cached

有什么有用的插件可以做到这一点吗?

我处于生产模式。我似乎看不到任何缓存短语来确认我的 Rails 应用程序正在缓存。

【问题讨论】:

    标签: mysql ruby-on-rails caching memcached


    【解决方案1】:

    在您的 config/environments/production.rb 中

    config.action_controller.perform_caching = true
    

    在开发和测试时默认禁用缓存,在生产时启用。

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

    例如:

     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

    在 ?ms 内完成 200 次 OK(查看次数:?ms | ActiveRecord:?ms)

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-12
      • 1970-01-01
      • 1970-01-01
      • 2012-08-16
      • 2010-09-25
      • 2019-05-12
      相关资源
      最近更新 更多