Как я Symfony2 c Vagrant подружил

в 17:25, , рубрики: symfony, symfony2, vagrant, метки: ,

Недовно я познакомился с инструментом для создания виртуального окружения Vagrant, который я использую для веб разработки и очень рад этому. Но не все так радостно c реализизацией в этом окружении Symfony2 проекта. А именно, проблема в медленности загрузки (генерации) страницы! Итак возникла задача увеличить быстродействие, так как время загрузки страницы более 10-ти секунд ну вовсе не ахти.

У кого возникла такая же проблема, или кому просто интересно прошу под кат.

Походив по просторам интернета я нашел замечательную статью о том как влияет обновления кеша и логов в Symfony2 проекте на быстродействие. Автор с помощью XHProf нашол «узкие места» и описав все детали пришел к выводу, что обновление кеша и логов в общедоступной (shared) директории приводит к проблеме медленной генерации страницы и решением этой проблемы будет переопределение этих директорий путем переноса их с shared в какую либо другую в виртуальной ОС. А именно вот так:

<?php

class AppKernel extends Kernel
{
    // ...

    public function getCacheDir()
    {
        if (in_array($this->environment, array('dev', 'test'))) {
            return '/dev/shm/appname/cache/' .  $this->environment;
        }

        return parent::getCacheDir();
    }

    public function getLogDir()
    {
        if (in_array($this->environment, array('dev', 'test'))) {
            return '/dev/shm/appname/logs';
        }

        return parent::getLogDir();
    }
}

Проделав это я скоротил время загрузки страницы но оно все еще осталось велико. Ответ сервера уже был короче, но загрузка файлов активов (asset files) занимала около 7-9 сек., поэтому я воспользовался еще одним советом из выше вышеупомянутой статьи и запустил команду автоматической генерации и регенерации asset-ов:

$ php app/console assetic:dump --watch

перед этим отключив их автоматическое обновления при каждом запросе:

# app/config/config_dev.yml
assetic:
    use_controller: false 

Детальнее об этом можно посмотреть вот здесь Dumping Asset Files in the dev environment

В результате, после проведения всего двух несложных действий я сумел ускорить время загрузки страниц с более 10-ти до менее 1-й секунд в зависимости от конретной страницы, что соответственно позволило мне повысить время на разработку и дебагинг в виртуальном окружение Vagrant.

Автор: r0ma

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js