我正在为我的 rails 应用程序使用 Heroku Dev(免费版)。为了性能,我使用了很多片段缓存。片段缓存的大小是否有限制?
另外,片段缓存存储在哪里?我没有为此设置任何配置。Heroku App 上没有 tmp 目录。
谢谢。
山姆
片段缓存使用与Rails.cache
应用程序其余部分相同的存储。默认情况下,Rails 使用具有 32mb 限制的内存存储,但如果您设置不同的存储(例如config.cache_store = :mem_cache_store
),则限制是不同的。值得注意的是,大多数 Memcache 存储的每个键大小为 1MB,因此您不能存储大于该大小的单个片段。
http://guides.rubyonrails.org/caching_with_rails.html#cache-stores
您可以在 Heroku 上使用memcache进行片段缓存,效果非常好。我推荐使用 25 MB 存储桶的免费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
希望这可以帮助。