MemcachedとAPCの違いと、人々がどちらか一方または両方の使用について語る理由を理解しようとしています。完全に異なる役割を持っていると思ったので、なぜ両方を使用しないのか理解できません。これが私の理解です:
APC
これにより、PHPコードのチャンクがキャッシュされ、RAMに格納されます。次に、同じコードを再度実行する必要がある場合、そのコードはすでにキャッシュされており、メモリから高速で実行されます。
PHP-FPMを実行する私の特定のケースでは、これによりその負荷が軽減されます。
Memcached
(2つのphpモジュールの違いは無視し、この目的のために同じものとして扱います)
これはDBオブジェクトをキャッシュし、RAMに格納します。次に、drupalが同じデータベースオブジェクトを呼び出す必要がある場合、すべての情報はそこにあり、データベースに移動する必要はありません。
MySQLを実行する私の特定のケースでは、これによりその負荷が軽減されます。
Drupalキャッシュビン
Drupal Stack Exchangeには、APCとmemcachedについて言及しているキャッシングとキャッシュビンに関する質問がたくさんあります。
- でキャッシュビンのための最高の場所である場合は、Memcacheのが原因APCと安定性の問題をお勧めします。
- であるがAPCは良いが実行されているとき、Memcachedのモジュールを使用して、任意のゲイン...、それのは、選択は個人の好みに降りてくると述べました。
- ではAPC、ニスやMemcacheのではDrupal 7を使用して...それはそれらの両方を組み合わせることについて語っています。
このため、この分野で非常に有益な質問のいくつかは、Memcachedを使用することをお勧めします。他のいくつかの質問では、両方を導入することに大きな違いはないと述べています。
しかし、私はこれがどのように機能するか理解していません。完全に異なるものをキャッシュしていないのですか?
よく使われるビューがあるとします。memcachedはビューに表示されるDBオブジェクトをキャッシュしていませんか?APCはそれらを呼び出すモジュールコードをキャッシュしていますか?
各Drupalキャッシュビンに使用できるキャッシュは1つだけなので、DBオブジェクトまたはPHPコードをキャッシュすることを選択できます。実際には、ほとんどのDrupalキャッシュビンは、2つのキャッシュのパフォーマンスの差がほとんどないか、大きすぎてすべてをキャッシュできません。 PHPでDBオブジェクトをキャッシュすることが唯一の合理的なオプションですか?
(したがって、ほとんどの人がmemcacheをデフォルトのキャッシュビンオプションとして提案する理由、つまり$conf['cache_default_class'] = 'MemCacheDrupal';
)