为什么Rails查询缓存不起作用?

cbe*_*aut 3 ruby-on-rails query-cache ruby-on-rails-3

在我的开发环境中,我有一个单一的请求,该请求会生成数百个相同的查询:

Person Load (24.4ms)  SELECT "persons".* FROM "persons" WHERE ("persons"."person_id" = 517) LIMIT 1  
. . .   
Person Load (64.4ms)  SELECT "persons".* FROM "persons" WHERE ("persons"."person_id" = 517) LIMIT 1
Run Code Online (Sandbox Code Playgroud)

为什么是这样?我以为Rails应该在每个请求的默认情况下启用查询缓存?

config/development.rb:  
config.cache_classes = false  
config.perform_caching = true    
. . .    
# Show full error reports and disable caching  
config.consider_all_requests_local       = true  
config.action_view.debug_rjs             = true  
config.action_controller.perform_caching = true  
config.active_support.deprecation        = :log  
Run Code Online (Sandbox Code Playgroud)

njo*_*den 5

如果要连接到多个数据库(例如,在某些模型中使用prepare_connection),则似乎只有ActiveRecord :: Base.connection启用了查询缓存。不确定这里是否是这种情况,但是肯定连接到多个DB会有棘手的副作用。