2012-06-12 2 views
3

Есть ли встроенная возможность (или внешний пакет) для кэширования данных в Symfony2?Как кэшировать данные в symfony2

Я не хочу кэшировать страницу, но данные внутри приложения, например, с помощью простого хранилища ключей -> в файловой системе.

+0

Смотрите также https://stackoverflow.com/questions/8893081/how-to-cache-in-symfony-2 – Czechnology

ответ

0

Пока нет уникального решения для кэширования в Symfony2. Некоторые части рамки используют Doctrine Common.

Есть дискуссии о «стандартной» кэширования решения, если Symfony2, но нам придется подождать некоторое время ...

+0

Теперь система кэширования доктрины из общий https://github.com/doctrine/cache – gagarine

2

Там нет никакого встроенного в растворе, но я рекомендую вам давать APC, Redis или Memcache попробуйте (все они хранятся в памяти).

1

Вы можете использовать LiipDoctrineCacheBundle для интеграции драйверов кэша из Doctrine, общих в ваш проект Symfony.

-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.cookie_lifetime и session.gc_maxlifetime, чтобы дать желаемое время жизни.

+1

Сессия не является кешем! Не злоупотребляйте им. Вместо этого используйте кеш файла или памяти, например. файловая система, memcache, reds и т. д. –

1

Я использую winzouCacheBundle. он предоставляет оптимизированный кеш-апи на разных бэкендах (apc, file, memcache, array, xcache, zenddata).

0

Я думаю, что DoctrineCacheBundle в настоящее время - путь.

DoctrineCacheBundle позволяет вашему приложению Symfony использовать различные системы кэширования через библиотеку «Кэш-память доктрины».

Docs @ Symfony.com

Code @ Github