因爲它不會出現在那裏是一個解決方案開箱,我編寫了我自己的解決方案通過添加以下代碼爲config /初始化/ rails_cache.rb
module Rails
class << self
alias :default_rails_cache :cache
def cache
# Allow any thread to override Rails.cache with its own cache implementation.
RequestStore.store[:rails_cache] || default_rails_cache
end
end
end
這允許任何線程來指定自己的緩存存儲,然後將用於所有讀取,讀取和寫入。因此,它不會從默認Rails.cache讀,也不會它的值寫入到默認Rails.cache。
如果線程是由具有啓用高速緩存長期運行和效益,您可以輕鬆地將其設置爲自己的MemoryStore的實例:
RequestStore.store[:rails_cache] = ActiveSupport::Cache.lookup_store(:memory_store)
,如果你想緩存徹底關閉這個線程,您可以: null_store而不是:memory_store。
如果您未使用request_store gem,則可以使用「Thread.current」替換「RequestStore.store」以獲得相同的效果 - 只需要更加小心跨請求的線程重用。
API的鋼軌您使用的是緩存在首位的數據,
? – jrochkind 2014-10-07 05:27:17
我正在使用rails 3.2.17。緩存是標準的Rails.cache - 在railties gem中的rails.rb中定義。 – 2014-10-07 15:04:31