3

RailsアプリケーションにHerokuDev(無料版)を使用しています。パフォーマンスのために、私は多くのフラグメントキャッシュを使用します。フラグメントキャッシュのサイズに制限はありますか?

また、フラグメントキャッシュはどこに保存されますか?そのための構成は設定していません。また、Herokuアプリにはtmpディレクトリはありません。

ありがとう。

サム

4

2 に答える 2

3

フラグメントキャッシングは、Rails.cacheアプリケーションの他の部分が使用するのと同じストアを使用します。デフォルトでは、Railsは32 MBの制限があるメモリストアを使用しますが、別のストア(たとえばconfig.cache_store = :mem_cache_store)を設定すると、制限が異なります。特に、ほとんどのMemcacheストアのキーサイズは1 MBであるため、それより大きい単一のフラグメントを保存することはできません。

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

于 2013-03-25T20:17:30.580 に答える
3

Herokuでmemcacheを使用して、フラグメントキャッシングを効果的に行うことができます。25MBのバケットを備えた無料の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

お役に立てれば。

于 2013-03-25T20:29:41.340 に答える