Как я Symfony2 c 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.

ссылка на оригинал статьи http://habrahabr.ru/post/212663/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *