cache:clear
を実行してクリアできるように、Symfony 2のキャッシュシステムを使用してアプリケーション固有のデータをキャッシュする必要があります。すべてのキャッシュはapp/cache
に依存していますが、実際にデータをキャッシュするにはどうすればよいですか?
http://symfony.com/doc/current/cookbook/index.html
私が見る唯一のトピックは、VarnishによるHTMLキャッシングについてです。
Doctrine=を使用している場合は、すでにこれらのキャッシュクラスを使用してください。
サービスをconfig.yml
に追加します:
services:
cache:
class: Doctrine\Common\Cache\ApcCache
そして、それをコントローラーで使用します:
if ($fooString = $this->get('cache')->fetch('foo')) {
$foo = unserialize($fooString);
} else {
// do the work
$this->get('cache')->save('foo', serialize($foo));
}
簡単な使用方法Doctrineキャッシュプロバイダー。最初に、service(config.ymlのサンプル)を登録します。
services:
memcached:
class: Memcached
calls:
- [ addServer, ['localhost', 11211] ]
memcached_cache:
class: Doctrine\Common\Cache\MemcachedCache
calls:
- [ setMemcached, [@memcached] ]
次に、例えばコントローラーでgetサービスを使用するには:
$cache = $this->get('memcached_cache');
別のサービスで送信するにはcallsを使用します。
calls:
- [ setCacheProvider, [@memcached_cache] ]
または引数:
arguments:
- @memcached_cache
同様に、Doctrine Cacheパッケージの他のインターフェイスを使用できます。 Doctrine Cacheは、いくつかのすぐに使用可能な実装が提供される非常にシンプルなインターフェースを提供します。
Doctrineをまだ使用していない場合、Doctrineプロジェクトの共通ライブラリが必要な場合があります:php composer.phar require doctrine/common
またはrequire only多くのキャッシュバックエンド向けのオブジェクト指向APIを提供するキャッシュライブラリ:php composer.phar require doctrine/cache
Doctrineキャッシュの使用方法 Doctrine Common documentation on Doctrine Project web site
Symfony 3.1は新しい キャッシュコンポーネント を提供します。
Symfony2は、アプリケーション層のキャッシュ用のコンポーネントを提供しません。
既に説明したように、Doctrine Commonキャッシングライブラリ http://docs.doctrine-project.org/projects/doctrine-common/en/latest/reference /caching.html
さらに高度なものが必要な場合は、コミュニティが提供するキャッシュバンドルのいずれかを使用することもできます。たとえば、 https://github.com/TheBigBrainsCompany/TbbcCacheBundle#cachebundle は、優れたキャッシュ戦略のためのツールを提供します。
Symfony2には部分的なキャッシュはありません。ビルドインキャッシュは完全なHTTPのみです。リバースプロキシを使用する必要があり、コードの一部のみをキャッシュする場合は、ESIを使用する必要があります。 symfony 1を使用するよりも作業が多いかもしれませんが、それだけの価値はあります。
とにかく、memcachedを使用して何かを保存するのを止めるものは何もありません。 このバンドルで つまり、質問のとおり、保存するデータしかなければ、完璧です(そしてmemcacheキャッシュはファイルシステムよりもはるかに高速です)。