Оптимизация производительности Laravel | OTUS
⚡ Подписка на курсы OTUS!
Интенсивная прокачка навыков для IT-специалистов!
Подробнее

Курсы

Программирование
Разработчик чат-ботов и приложений для виртуальных ассистентов
-15%
PHP Developer. Professional Алгоритмы и структуры данных Scala-разработчик PHP Developer. Basic C# Developer. Professional
-23%
C# ASP.NET Core разработчик Python Developer. Basic Python Developer. Professional Cloud Solution Architecture Специализация iOS
-25%
HTML/CSS Android Developer. Professional React.js Developer Unity Game Developer. Professional NoSQL Java Developer. Professional Highload Architect C++ Developer. Basic Web-разработчик на Python Unity Game Developer. Basic Интенсив «Оптимизация в Java» Супер-практикум по использованию и настройке GIT Symfony Framework Java Developer. Basic Супер-интенсив "Tarantool"
Инфраструктура
MongoDB
-30%
Разработчик чат-ботов и приложений для виртуальных ассистентов
-15%
Administrator Linux. Professional
-26%
Network engineer Administrator Linux. Advanced Специализация Administrator Linux
-25%
Разработчик программных роботов (RPA) на базе UiPath и PIX
-27%
NoSQL Инфраструктурная платформа на основе Kubernetes Highload Architect Мониторинг и логирование: Zabbix, Prometheus, ELK Супер-практикум по использованию и настройке GIT Administrator Linux.Basic Экспресс-курс «IaC Ansible» Экспресс-курс по управлению миграциями (DBVC) Экспресс-курс "Версионирование и командная работа с помощью Git" Network engineer. Basic Основы Windows Server
Корпоративные курсы
Безопасность веб-приложений MongoDB
-30%
Разработчик чат-ботов и приложений для виртуальных ассистентов
-15%
Agile Project Manager Руководитель поддержки пользователей в IT
-10%
Промышленный ML на больших данных Cloud Solution Architecture Внедрение и работа в DevSecOps Spark Developer Reverse-Engineering IT-Recruiter Machine Learning. Professional Интенсив «Оптимизация в Java» Супер-практикум по использованию и настройке GIT Экcпресс-курс «ELK» Enterprise Architect Экспресс-курс «CI/CD или Непрерывная поставка с Docker и Kubernetes» Экспресс-курс «Введение в непрерывную поставку на базе Docker» Вебинар CERTIPORT
Специализации Курсы в разработке Подготовительные курсы Подписка
+7 499 938-92-02

Оптимизация производительности 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')

Для комментирования необходимо авторизоваться
🔥 Выгодные предложения
Подборка курсов, которые можно приобрести по выгодной цене только до конца июля!