Оптимизация производительности Laravel | OTUS
Прямо сейчас идет открытый вебинар «Машинное обучение на службе Data Science» . Присоединяйтесь!

Оптимизация производительности Laravel

Laravel_Deep_18.07_site-5020-a39abc.png

С момента выпуска Laravel (2011 год) фреймворк стал очень популярным, особенно при разработке бизнес-ориентированных приложений. У этого есть много причин. Одна из них — возможность оптимизации производительности и настройки своих приложений. Итак, давайте попробуем оптимизировать Laravel-приложение на продакшене.

Сервер

Предполагается, что Laravel уже установлен на сервер. Мои настройки: • Laravel 5.5; • PHP 7.1; • MYSQL.

Кеширование конфигурации

В Laravel есть хорошая команда artisan cache config. Она весьма полезна, если нужно повысить производительность. Использование:

php artisan config:cache

После запуска просто так менять файлы конфигурации не получится. Придётся обновлять кеш и выполнять эту команду повторно. Для очистки кеша конфигурации используйте:

php artisan config:clear

Чтобы дальше оптимизировать производительность, можно использовать OpCache для кеширования php-кода, поэтому компилировать его снова и снова вам уже не придётся.

Кеш маршрутизации

Кеширование маршрутов — важнейшая часть оптимизация, особенно, когда маршрутов много. Кеш маршрутов — простой массив, повышающий производительность Laravel. Запустите эту команду:

php artisan route:cache

Не забывайте запускать команду всегда, когда вносите изменения в файл маршрутов либо добавляете новый маршрут. Чтобы очистить кеш, используйте:

php artisan route:clear

Удаляем неиспользуемые сервисы

При оптимизации Laravel никогда не загружайте все службы из конфигурации. Очень важно отключать службы из файлов конфигурации, которые не используются.

Оптимизация автозагрузки Composer

Composer нужен для сканирования приложения, чтобы создать однозначную ассоциацию классов и файлов в приложении. Команда:

composer dumpautoload -o

Лимитируем подключаемые библиотеки

Важно просмотреть все библиотеки, вызываемые в коде. Если думаете, что можно решить задачу без библиотеки, лучше удалите её из config/app.php, что позволит ускорить Laravel.

JIT-компилятор

Преобразование PHP-кода в байт-код с последующим его выполнением при каждом запросе — очень ресурсоёмкий процесс. Поэтому, к примеру, для выполнения подпрограмм на C нужны такие посредники, как Zend Engine. Для Laravel-приложений рекомендуется использовать JIT-компилятор HHVM от Facebook.

Кеш результатов запросов

Прекрасный способ оптимизации — кеширование результатов наиболее часто используемых запросов:

$posts = Cache::remember('index.posts', 30, function() {
return Post::with('comments', 'tags', 'author', 'seo')->whereHidden(0)->get();
});

Используем «жадную» загрузку данных

Если Eloquent использует «жадную» загрузку, в ответ на первоначальный запрос загружаются связанные объектные модели. Давайте сравним два вида загрузок: eager loading и lazy loading.

Запрос lazy loading выглядит так:

$books = App\Book::all();
foreach ($books as $book) {
echo $book->author->name;}

Запрос eager loading выглядит несколько иначе:

$books = App\Book::with('author')->get();
foreach ($books as $book) {
echo $book->author>name;}

Прекомпилирование ресурсов

Как правило, разработчики помещают код во множестве отдельных файлов. Хоть это и позволяет делать код легкоуправляемым и чистым, но не способствует повышению производительности. Чтобы помочь программистам, создатели Laravel предлагают использовать ряд простых команд:

php artisan optimize
php artisan config:cache
php artisan route:cache

Источник

Не пропустите новые полезные статьи!

Спасибо за подписку!

Мы отправили вам письмо для подтверждения вашего email.
С уважением, OTUS!

Автор
4 комментария
0

А что делает команда php artisan optimize? И как оптимизировать приложения на lumen?

0

Данная команда заменяет

php artisan config:cache php artisan route:cache

Если вы её запустите, то увидите следующее:

Configuration cache cleared! – очистка кеша конфигов Configuration cached successfully! – кеширование конфигов Route cache cleared! – очистка кеша роутов Routes cached successfully! – кеширование роутов

1

Для Laravel-приложений рекомендуется использовать JIT-компилятор HHVM от Facebook.

Тема интересна, было бы хорошо хотя бы ссылку прикрутить на стороннюю статью

0

php artisan config:cache

С данной командой нужно быть очень осторожным. Перед её применением необходимо убедиться, что функция env() используется только в конфигурационных файлах (папка config), так как функция перестанет работать после кеширования конфигов.
Если вам кажется, что без env() не обойтись, то лучше вместо этого создайте отдельный конфиг config_name.php и уже из него получайте данные с помощью config('config_name.key')

Для комментирования необходимо авторизоваться
Популярное
Сегодня тут пусто