2010-12-01 59 views
2

在我的開發環境我有一個請求時產生數百個相同的查詢:爲什麼rails查詢緩存不起作用?

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 

這是爲什麼?我認爲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 
+0

查詢是否緩存在生產環境中? – 2010-12-01 18:40:38

回答

3

如果要連接到多個數據庫(比如通過使用某些型號establish_connection),似乎只有ActiveRecord的:: Base.connection得到啓用查詢緩存。不知道這是否是這種情況,但肯定是連接到多個數據庫的一個棘手的副作用。

+0

只是爲了補充一點,解決這個問題的方法似乎是在您要緩存的代碼周圍手動使用YourRecord.cache {}。請記住緩存將在塊的末尾被擦除,因此請確保在緩存塊退出之前,要緩存的任何重複查詢都要運行。 – 2011-12-23 19:51:25