私たちは、Symfony 3.2(当時はSymfony 2.3で始まった)とDoctrine ORM 2.5に基づいて実行中のアプリケーションを開発しました。フレームワークとドクトリンのためのsymfony 3キャッシングを試してみよう
新しいSymfony Cacheコンポーネント、APCとAPCUの起動と停止、opcache、Symfonyでのチャッキング要求などについてたくさん読んだことがありますが、今回は非常に正直なところです。
私は、1)理解と2)生産における「標準的な」Symfony/Doctrineアプリケーションのキャッシュを実装する際に、私をサポートできるかどうかを尋ねます。 opcache
前提条件/仮定
1)が有効になり、アクティブとバイトコードに関連するものをキャッシュする必要があります。
2)私は現在、自分のアプリをキャッシュする必要はありません。アノテーション、クラスマップ、バリデーション、ORMメタデータなどのフレームワークキャッシュに関するものです。
2)ほとんどの開発者は複数のキャッシングプロバイダを扱いたくないので、APCu、xcache、redis、memcache他に何か。さまざまなタスクのために異なるものを持つことは非常に良い理由があるかもしれませんが、単純に保つためにはそれに固執しましょう。 PRODモードで
"標準" のSymfony/Doctrineのアプリケーションでキャッシュ・オプション
1)クラスローディング
我々はまだapp.php
内の所定の位置にApcClassLoaderを持っている:
$loader = require __DIR__ . '/../app/autoload.php';
include_once __DIR__ . '/../var/bootstrap.php.cache';
$apcLoader = new ApcClassLoader('arcsf2', $loader);
$apcLoader->register(true);
$loader->unregister();
require_once __DIR__ . '/../app/AppCache.php';
$kernel = new AppKernel('prod', false);
$kernel->loadClassCache();
$kernel = new AppCache($kernel);
symfonyには私の理解に基づいてApcClassLoaderとXcacheClassLoader。だから、これは上記の仮定2と矛盾するかもしれない。
質問:それはまだ場所で、このキャッシュクラスローダを持っている方が良い大幅に実行する/必要/
を必要としていますか?
また、現在の標準app.phpを使用すれば十分ですか?
$loader = require __DIR__.'/../app/autoload.php';
include_once __DIR__.'/../var/bootstrap.php.cache';
$kernel = new AppKernel('prod', false);
$kernel->loadClassCache();
2)検証キャッシュ
我々はまだ私たちのconfig_prod.yml
でこれを持っている:
framework:
validation:
cache: validator.mapping.cache.doctrine.apc
質問:
非常に正直に言うと、私は見当がつかない、これがまだVAかどうかSymfony 3.2と新しいキャッシュコンポーネントを備えた蓋。また、必要に応じて別のキャッシュ・プロバイダに変更する方法もあります。 Symfony 3.2 Cacheを使ってどのように「最新」に変更することができますか?
3)ドクトリンキャッシュ:同じ質問がconfig_prod.yml
に教義のORMのセクションに適用されます
多かれ少なかれ:
doctrine:
orm:
metadata_cache_driver: apc
result_cache_driver: apc
query_cache_driver: apc
質問:
はまだこのです行く道?これを変更するには、新しいSymfony Cacheコンポーネントを使用します - とにかくこれを行うことはできますか?
4)新しいオプション?
新機能についてはどうですか?オプション? config_prod.yml
に設定する:
framework:
cache:
app: cache.adapter.someProviderOrPool
system: cache.adapter.someProviderOrPool
質問:
誰と、これは何とか上記のトピックのいくつかを拡張/交換されることで、ここではどのような種類の情報をキャッシュしていますか?
私は基本的にsymfonyの3.2準拠のようにすべての私のprodのconfigsを変更したいと私は、私は絶対にないアイデアを持っていない可能な限りますが、キャッシング(交換APC)のためのRedisを使用したい:
それを合計するにはどこから始めるのか。
**** **** EDIT
だけでなく、symfonyのキャッシュコンポーネントとDoctrineCacheBundleが一緒に遊ぶんどのようにこの文脈では?交換?追加?建物に?一緒に働いている?矛盾している?比較できない?
なぜdownvoteですか?または、少なくとも質問を改善する方法についてすぐにコメントすることができますか? – LBA