根据Rails Guides:
查询缓存是一种Rails功能,用于缓存返回的结果集 通过每个查询,以便如果Rails再次遇到相同的查询 该请求,它将使用缓存的结果集而不是运行 再次查询数据库。
然后是一个示例,其中在控制器的操作中执行相同的查询:
class ProductsController < ApplicationController
def index
# Run a find query
@products = Product.all
...
# Run the same query again
@products = Product.all
end
end
在我的视图布局中,我调用Category.pluck(:id)
。在开发日志中,我会多次看到这一行:
SELECT "categories"."id" FROM "categories"
即使我将其设置为config.action_controller.perform_caching = true
进行开发,也会发生这种情况。为什么会这样?
答案 0 :(得分:2)
查询缓存来自Rack。
运行rake middleware
寻找ActiveRecord::QueryCache
如果你的中间件中有这个,那么应该启用SQL缓存,除非其他东西正在关闭它。
以下是有关查询缓存的一些文档:
http://edgeapi.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/QueryCache.html
和机架代码
http://api.rubyonrails.org/classes/ActiveRecord/QueryCache.html