Heroku Dev上的片段缓存是否有限制?

时间:2013-03-25 20:12:11

标签: caching heroku

我正在使用Heroku Dev(免费版)进行我的rails应用程序。 为了性能,我使用了许多片段缓存。 片段缓存的大小是否有限制?

此外,片段缓存存储在哪里?我没有为此设置任何配置。 Heroku App上没有tmp目录。

感谢。

萨姆

2 个答案:

答案 0 :(得分:3)

片段缓存使用与应用程序其余部分使用的Rails.cache存储相同的存储。默认情况下,Rails使用具有32mb限制的内存存储,但如果您设置不同的存储(例如config.cache_store = :mem_cache_store),则限制是不同的。值得注意的是,大多数Memcache存储的每个密钥大小为1MB,因此您无法存储大于该大小的单个片段。

http://guides.rubyonrails.org/caching_with_rails.html#cache-stores

答案 1 :(得分:3)

您可以在Heroku上使用 memcache 进行片段缓存,效果非常好。我推荐使用25 MB Bucket的免费Memcachier计划。

$ heroku addons:add memcachier:dev

经过一些研究后,我在我的production.rb中使用这些设置。

# config/production.rb
# Caching
#
# Explicit Requires
require 'memcachier'
require 'dalli'

# Global enable/disable all memcached usage
config.perform_caching = true

# Disable/enable fragment and page caching in ActionController
config.action_controller.perform_caching = true

# Full error reports are disabled
config.consider_all_requests_local = false

# The underlying cache store to use.
config.cache_store = :dalli_store, { :compress => true }

# The session store is completely different from the normal data cache
# config.session_store = :dalli_store # REVIEW: Does this imply infinite sessions?

# HTTP Caching
config.action_dispatch.rack_cache = {
  :metastore    => Dalli::Client.new,
  :entitystore  => 'file:tmp/cache/rack/body',
  :allow_reload => false
}

# Gemfile
group :production do
  # Memcached using Memcachier on Heroku
  gem 'memcachier'
  gem 'dalli'
end

希望这有帮助。