我有几个YAML文件要从服务中解析。
但是在每次点击时,这些YAML文件都会被解析并转换为PHP数组。我知道Symfony会保留缓存的默认YAML文件,因此它不会在每次点击时解析每个yaml文件。
我想知道这里的最佳做法是什么。有没有办法让我的YAML文件只解析一次并存储在Symfony2的缓存中?如果是这样,我可以指出正确的方向吗?
答案 0 :(得分:3)
这一切都取决于你想如何进行缓存。
HTTP缓存实际上只有在Web上下文中以及当您解析并将这些文件添加到数组的操作的特定输出相对静态时才有意义。如果满足这两个条件,那么这是最好的方法。
您可以轻松使用APC 进行缓存。它使缓存变量的内容非常简单。 Doctrine提供了围绕APC的缓存抽象,或者您可以使用本机PHP函数。
在config.yml
中 services:
cache:
class: Doctrine\Common\Cache\ApcCache
然后在您的控制器或服务中:
if ($yamlArray = $this->get('cache')->fetch('foo')) {
$yamlArray = unserialize($yamlArray);
} else {
// do the work
$this->get('cache')->save('foo', serialize($yamlArray));
}
Details on creating a cache warmer
Details on cache_clearer(已添加,但没有详细记录)。