Как кешировать в Symfony 2?

Мне нужно кэшировать некоторые данные приложения, используя систему кэширования Symfony 2, чтобы я мог запускать cache:clear чтобы очистить его. Весь кеш зависит от app/cache но как я могу на самом деле перейти к кешированию данных?

http://symfony.com/doc/current/cookbook/index.html

Единственная тема, которую я вижу, – это кэширование 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 . Сначала зарегистрируйте службу (образец в 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: - [ setCacheProvider, [@memcached_cache] ] 

или аргументы:

 arguments: - @memcached_cache 

Таким же образом вы можете использовать другие интерфейсы пакета Doctrine Cache. Doctrine Cache обеспечивает очень простой интерфейс, для которого предусмотрены несколько вариантов из коробки:

  • ApcCache (требуется ext / apc)
  • ArrayCache (в памяти, срок службы запроса)
  • FilesystemCache (не оптимальный для высокого параллелизма)
  • MemcacheCache (требуется ext / memcache)
  • MemcachedCache (требуется ext / memcached)
  • PhpFileCache (не оптимальный для высокого параллелизма)
  • RedisCache.php (требуется ext / phpredis)
  • WinCacheCache.php (требуется ext / wincache)
  • XcacheCache.php (требуется ext / xcache)
  • ZendDataCache.php (требуется платформа сервера Zend)

Если вы еще не используете Doctrine , вам могут потребоваться проекты Common Library for Doctrine : php composer.phar require doctrine/common или требует только библиотеки Caching, предлагающей объектно-ориентированный API для многих кеш-серверов : php composer.phar require doctrine/cache

Как использовать Doctrine Caching вы можете прочитать в Доктрине Общая документация на веб-сайте Doctrine Project

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 и хранить в нем какие-то вещи, посмотрите на это Bundle, то есть, если ваш вопрос задает вопрос, у вас есть только данные для хранения, это идеально (и кеш memcache намного быстрее, чем файловая система) ,