Приватный кеш в symfony 2 не генерирует

Я пытаюсь использовать HTTP-кеш для своего приложения, но каждый раз, когда я устанавливаю кеш в приватный режим, он не появляется в папке app / cache.

Для публичного кэша все в порядке, файлы / папки генерируются.

Это то, чего мне не хватает? Я пытаюсь создать кеш для раздела моего сайта, который требует аутентификации. Таким образом, кэш должен быть специфичным для каждого имени пользователя, потому что он создает отчеты только для этого пользователя.

Это то, что я делаю:

    $response = $this->render('myTemplate.html.twig', array(
'username' => $username
));

$response->setMaxAge(600);
$response->setPrivate();

return $response;

0

Решение

Http-кеш Symfony действует как публичный (общий) обратный прокси-сервер. Это означает, что он кэширует только публичные ответы.

Читать Публичные и частные ответы в документах Symfony:

Кэши шлюзов и прокси-серверов считаются «общими» кэшами, поскольку
Кэшированный контент используется несколькими пользователями. Если пользовательский
Ответ был когда-либо по ошибке сохранен в общем кэше, это может быть
позже вернулся к любому количеству разных пользователей. Представьте, если ваш
данные учетной записи были кэшированы, а затем возвращены к каждому последующему
пользователь, который попросил страницу своего аккаунта!

Чтобы справиться с этой ситуацией, каждый ответ может быть установлен как открытый или
частный:

  • public: указывает, что ответ может быть кэширован как частным, так и
    общие кэши;
  • личное: указывает на то, что ответ полностью или частично
    сообщение предназначено для одного пользователя и не должно кэшироваться
    общий кеш.

Symfony по умолчанию консервирует каждый ответ
частный. Чтобы воспользоваться преимуществами общих кешей (например, Symfony reverse)
прокси), ответ должен быть явно установлен как публичный.

2

Другие решения

Других решений пока нет …