lamo4ok
@lamo4ok
Программист

Symfony 4: как отключить кеширование классов и всего такого в var/cache?

Собственно, в теме весь вопрос. Нужно для того, чтобы без проблем отлаживать код, иначе когда приходит запрос и мы проваливаемся в этот кеш, это вызывает проблемы. Интересует такой метод, который позволял бы это делать на этапе запущенного приложения, проще говоря - в файле public/index.php. Ну и бонусом будет здорово, если вкратце расскажете, что это и зачем, ну или хотя бы дадите ссылку с объяснением для чайников про этот кеш.
  • Вопрос задан
  • 787 просмотров
Решения вопроса 1
BoShurik
@BoShurik Куратор тега Symfony
Symfony developer
Отключать не стоит, т.к. контейнер и роутинг компилируемые by design, т.о. время ответа будет очень долгим (4000ms vs 250ms на моем приложении)
Если очень хочется, то можно сделать так:
// \App\Kernel
protected function initializeContainer()
{
    if ($_ENV['APP_ENV'] === 'dev') {
        $container = $this->buildContainer();
        $container->setParameter('container.build_id', 'id');
        $container->setParameter('container.build_hash', 'hash');
        $container->set('kernel', $this);
        $container->compile(true);

        $this->container = $container;
    } else {
        parent::initializeContainer();
    }
}

Но чтоб это заработало, мне пришлось отключить smart-core/accelerator-cache-bundle, возможно другие бандлы тоже несовместимы с таким режимом.

Так что в вашем случае я бы все-таки рекомендовал как-то законфигурировать докер.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
glaphire
@glaphire
PHP developer
В dev окружении кеш перегенеривается на каждое изменение затрагиваемого кода, емнип. Контейнер кешируется, чтобы экономить ресурсы при генерации такого довольно сложного класса. Остальной кеш по аналогии - для экономии ресурсов.
https://symfony.com/doc/current/components/depende...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы