如何在Symfony 2中caching?

我需要使用Symfony 2的caching系统caching一些特定于应用程序的数据,以便我可以运行cache:clear以清除它。 所有的caching依赖于app/cache但我怎么真的去caching数据?

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

我看到的唯一主题是关于使用Varnish的HTMLcaching。

如果你正在使用Doctrine已经只是使用这些caching类。

添加一个服务到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)); } 

简单的方法使用Doctrinecaching提供程序 。 首先,注册服务(在config.yml中的示例):

 services: memcached: class: Memcached calls: - [ addServer, ['localhost', 11211] ] memcached_cache: class: Doctrine\Common\Cache\MemcachedCache calls: - [ setMemcached, [@memcached] ] 

然后使用获取服务,例如在控制器中:

 $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 Server Platform)

如果您尚未使用Doctrine ,则可能需要Common Library for Doctrine项目php composer.phar require doctrine/common或仅需要caching库,为许多caching后端提供面向对象的APIphp composer.phar require doctrine/cache

如何使用Doctrine Caching,你可以在Doctrine Project网站的 Doctrine Common documentation上阅读

Symfony 3.1提供了一个新的Cache组件 。

Symfony2不提供用于应用程序层caching的任何组件。

就像你已经告诉过的那样,你可以使用Doctrine Commoncaching库http://docs.doctrine-project.org/projects/doctrine-common/en/latest/reference/caching.html

如果你想要更高级的东西,你也可以使用社区提供的一个caching包。 例如, https://github.com/TheBigBrainsCompany/TbbcCacheBundle#cachebundle提供了一个良好的caching策略的工具。;

Symfony2中没有部分caching,内置caching仅为完整的HTTP。 您必须使用反向代理,如果您只想caching一段代码,则必须使用ESI。 这可能比symfony 1更多的工作,但performance值得。

无论如何,没有什么能阻止你使用memcached,并存储一些东西,看看这个捆绑软件即如果作为你的问题陈述它,你只有数据存储,这是完美的(和memcachecaching比文件系统更快) 。