如何在Symfony 2中缓存?
我需要使用Symfony 2的缓存系统缓存一些特定于应用程序的数据,以便我可以运行以清除它。所有缓存都依赖于,但我实际上如何缓存数据?cache:clear
app/cache
http://symfony.com/doc/current/cookbook/index.html
我看到的唯一主题是关于使用Varnish进行HTML缓存。
我需要使用Symfony 2的缓存系统缓存一些特定于应用程序的数据,以便我可以运行以清除它。所有缓存都依赖于,但我实际上如何缓存数据?cache:clear
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 缓存提供程序的简单方法。首先,注册服务(config.yml 中的示例):
services:
memcached:
class: Memcached
calls:
- [ addServer, ['localhost', 11211] ]
memcached_cache:
class: Doctrine\Common\Cache\MemcachedCache
calls:
- [ setMemcached, [@memcached] ]
然后使用 get 服务,例如在 controler 中:
$cache = $this->get('memcached_cache');
以发送其他服务使用调用:
calls:
- [ setCacheProvider, [@memcached_cache] ]
或参数:
arguments:
- @memcached_cache
以同样的方式,您可以使用 Doctrine Cache 包的其他接口。Doctrine Cache提供了一个非常简单的接口,为此提供了几个开箱即用的实现:
如果您尚未使用 Doctrine,则可能需要 Doctrine 项目的 Common Library:或者只需要为许多缓存后端提供面向对象 API 的缓存库:php composer.phar require doctrine/common
php composer.phar require doctrine/cache