如何在symfony2中缓存数据

时间:2012-06-12 07:58:17

标签: caching symfony

是否有内置的可能性(或外部捆绑)来缓存Symfony2中的数据?

我不想使用简单的密钥缓存页面本身,而是缓存应用程序内的数据 - >例如,值存储在文件系统上。

6 个答案:

答案 0 :(得分:2)

没有内置解决方案,但我建议您尝试APCRedisMemcache(它们都是内存中的数据存储区)。

答案 1 :(得分:1)

您可以使用LiipDoctrineCacheBundle将来自Doctrine common的缓存驱动程序集成到Symfony项目中。

答案 2 :(得分:1)

我正在使用winzouCacheBundle。它为您提供了不同后端(apc,file,memcache,array,xcache,zenddata)的简化缓存api。

答案 3 :(得分:0)

目前,Symfony2中没有唯一的缓存解决方案。框架的某些部分使用Doctrine Common

如果Symfony2有关于“标准”缓存解决方案的讨论,但我们将不得不等待一段时间......

答案 4 :(得分:0)

我认为 DoctrineCacheBundle 目前是最佳选择。

  

DoctrineCacheBundle允许Symfony应用程序通过Doctrine Cache库使用不同的缓存系统。

Docs @ Symfony.com

Code @ Github

答案 5 :(得分:-1)

如果我理解得很好,您希望存储数据(附加到会话)并在同一会话再次调用新控制器时重新加载它们,以避免多次执行相同的过程(例如读取来自数据库的表格。)

您可以在控制器中使用会话系统:

<?php
namespace YourStuff\YourBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Response;

class YourController extends Controller
{
    $session = $this->get("session");
    $variabile = 4;
    $session->set("variableName",$variable); // setter
    if ($session->has("variableName") // to check if the variable exists
    {
        $variableName = $session->get("variableName"); // getter
    }
}

这是一个例子;如果会话的生命周期尚未到期,则可以在下次调用同一会话时访问“variableName”。

“session”使用PHP的__SESSION变量,因此请务必正确设置session.cookie_lifetime和session.gc_maxlifetime,以便提供所需的生命周期。