2016-12-02 1 views
8

私たちは、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が一緒に遊ぶんどのようにこの文脈では?交換?追加?建物に?一緒に働いている?矛盾している?比較できない?

+0

なぜdownvoteですか?または、少なくとも質問を改善する方法についてすぐにコメントすることができますか? – LBA

答えて

関連する問題