Laravel

Оптимизация для работы с Laravel 4

Оптимизация для работы с Laravel 4

В настоящий момент документация по оптимазации и работе для Laravel 4 недостаточна или отсутствует. В этой статье предоставляется информация по улучшению производительности Laravel 4.

Прежде всего, все что применяется для обычной PHP разработки также применяется и для Laravel 4. Встроенные PHP функции будут более эффективны нежели попытка создать свои "велосипеды", так-же сама структура базы данных будет отражаться на производительности системы.

Laravel использует ленивую автозагрузку для классов. Это значит что если он не включает КАЖДЫЙ файл в вендор директорию, то скорее всего он ждет вызова класса который еще не загружен, затем, пытается угадать где же он расположен. Если вы используете PSR-0 автозагрузку, он проверяет файл Namespace/Namespace/Class.php в PSR-0 директориях, которые вы определили в вашем composer.json. Если вы используете classmap, он всего лишь ищет имя класса и загружает соответствующий файл. Поэтому, если вы добавили новый класс в директорию только автоматически загрузив через classmap, вы получите "класс не найден" пока вы не запустите composer dump-autoload.

Laravel 4 добавляет несколько директорий в автолоадер при загрузке автоматически. Откройте app/start/global.php и вы увидите вызов в ClassLoader::addDirectories - классы внутри этих директорий также будет автоматически загруженны используя правило PSR-0. Для выполнения, вам необходимо удалить все вызовы этой функции и полагаться только лишь на автозагрузку с Composer.

PSR-0 очень удобна для разработки поскольку она позволяет вам добавить класс и будет немедленно найден автолоадером - как только вы получите имена, правильно расставьте пробелы и имена, а также правильно названные имена файлов. В процессе работы , вы как правило, не используете PSR-0 автозагрузку, поскольку это явный перебор. Используйте composer dump-autoload --optimize для рекомпилировки всех ваших PSR-0 правил автозагрузки в правилах классмапа, они работают быстрее.

Когда дебуг установлен на false в app/config/app.php, в функции Laravel Artisan php artisan optimize осуществляет две вещи: Запускает команду composer dump-autoload --optimize, а также генерирует файл bootstrap/compiled.php. Этот файл содержит в себе много общих файлов класса Laravel framework, и позволяет системе требовать лишь один файл хотя в действительности фреймворк разделяется на много сотен файлов.

Запуск php artisan optimize каждый раз во время обновления ваших файлов настоятельно рекомендуется, поскольку производительность возрастет в разы. Полагаясь на каждое автоматическое развертывании приложения (предпочтительно после временного php artisan down, чтобы предотвратить проблемы).

Вы можете добавить файлы к этому компилированному файлу, посредством их внесения в массив app/config/compile.php. Файлы должны содержать ссылку относительно корня проекта- например:

'vendor/laravel/framework/src/Illuminate/Support/Collection.php',
'vendor/cartalyst/sentry/src/Cartalyst/Sentry/Sentry.php',
'app/library/HelperClass.php',

Используйте профайлер как loic-sharma/profiler что бы найти, какие файлы были загружены на ваши запросы, и добавьте их в ваш массив compiled.php. Я сократил время ответа в половину посредством этих действий

Текст переведён с разрешения автора Andreas Lutro

Valentin Rasulov

Комментариев нет

Чтобы оставить комментарий необходимо авторизоваться