私は同様の問題に取り組んできました。
まず、用語をわかりやすく説明しましょう。
- Memcached:キーと値のペアを実際にメモリに格納するサーバー(dはデーモン用)で実行されているプロセス。
- cache_store
Rails.cache
:さまざまなRubyソフトウェア実装を使用するように構成できる単一のAPIを備えたRailsキャッシュストレージ( )。の1つの設定config.cache_store
は:memory_store
、メモリ内の実装を使用することです。もう1つの設定は:dalli_store
、dalli gemの使用を指定することです。これは、内部でmemcachedサーバーへのリモート接続を行う可能性があります。
- Dalliストア:値をmemcachedに物理的に格納するdalligemに裏打ちされたRailsキャッシュを意味すると思います。
- Rack :: Cache:ヘッダー(Expires、Cache-Control、ETagなど)をHTTP応答に挿入し、リバースプロキシキャッシュとしても機能し、可能な場合はRailsスタックに到達する前にリクエストを処理するRackミドルウェア。ウェブサイトを参照してください。
Rack :: CacheがRailsスタックやアプリの残りの部分に到達する前にリクエストを処理するには、応答とメタデータをどこかに保存する必要があります。物を保管する場所は、設定によって構成されconfig.action_dispatch.rack_cache = { ... }
ます。
これはとは異なる設定であることに注意してくださいconfig.cache_store = :dalli_store
。それらは関連している必要はありません。これが多くの混乱の原因だと思います。ただし、実際には、両方にmemcachedを使用することをお勧めします。これは、dalli実装を使用することを意味します。ただし、それぞれに独自のDalli::Client
インスタンスがあります。(また、session_storeは関連している可能性がありますが、関連している必要はありません。)
Heroku杉スタックには、dyno間で共有できない一時的なファイルシステムがあります。ただし、Heroku自体は、Rack :: Cacheでのみtmpファイルストレージをentitystore
使用し、。にはmemcachedを使用することをお勧めしますmetastore
。
実際にRack::Cacheメタストアに格納されるものについては、rack-Rack::Cache::MetaStore
cachev1.2クラスのドキュメントは次のとおりです。
The MetaStore is responsible for storing meta information about a
request/response pair keyed by the request's URL.
The meta store keeps a list of request/response pairs for each canonical
request URL. A request/response pair is a two element Array of the form:
[request, response]
The +request+ element is a Hash of Rack environment keys. Only protocol
keys (i.e., those that start with "HTTP_") are stored. The +response+
element is a Hash of cached HTTP response headers for the paired request.
したがって、質問に答えるために、HTTPリクエストヘッダーとHTTPレスポンスヘッダーはRack::Cacheメタストアに保存されます。一方、Rack :: Cacheエンティティストアは応答本文全体(つまりHTML)を格納します。
Herokuではページキャッシングを確実に使用できないため、アクションキャッシングとフラグメントキャッシングを使用している可能性があります。アクションとフラグメントのキャッシュは、Railsキャッシュストアを使用します(ラックキャッシュではありません)。ただし、両方を物理的に同じmemcachedサーバーを使用するように設定した場合、両方がメモリの使用に寄与します。アクションと部分キャッシュは実際のHTMLを保存します。
memcachierを使用している場合は、実際の使用状況をより詳細に把握するには、次のコマンドを実行してブラウザーで分析ダッシュボードを開きます。
heroku addons:open memcachier
memcached統計の取得の詳細については、この質問を参照してください。