Я играю с Проверка HTTP-кэша — проверка с заголовком ETag
В моем контроллере у меня есть:
// ... get the $data and $myObject somehow ...
$response = $this->json($data);
$response->setEtag($myObject->getDateModified()->format("Y-m-d H:i:s")); // getDateModified() returns a DateTime
$response->setPublic();
return $response;
При первой загрузке страницы после удаления кэша контроллер запускается и все в порядке. Но, начиная со второго раза, я просто получаю:
FatalErrorException в строке classes.php 3353: Ошибка: невозможно объявить
Класс Symfony \ Component \ HttpFoundation \ Response, потому что имя
Уже в использовании
эта проблема есть, как только я использую $response->setPublic();
В чем причина проблемы? Я делаю что-то не так?
Я нашел это, может быть, это может помочь вам https://github.com/contao/core-bundle/issues/643
Они предлагают удалить линию $kernel->loadClassCache();
от app.php
,
Это попытка ускорения, которая предварительно загружает классы, которые необходимы в
большинство запросов. Это, однако, устарело в PHP7.0 и маргинально в PHP
5.6 — следовательно, это сохранить, чтобы удалить его.
РЕДАКТИРОВАТЬ: я удалил строку $kernel->loadClassCache();
и ошибок больше нет и http кеш работает нормально.
Кроме того, вот дополнительная информация: https://github.com/symfony/symfony/issues/20668
Других решений пока нет …